/*
 * OLayer Software Developer's Guide - main page
 */

/** \mainpage OMCI Service Layer Software Deveoper's Guide

\section intro Introduction
OMCI Service Layer and OMCI atack is BAL / SDN-PAL add-on package. It is designed for managing xPON ONUs using service-oriented requests.
OMCI Service Layer performs the following functions:
- Converts service oriented requests into OMCI ME requests
- Applies OMCI MEs in the correct order using built-in FSMs
- Handles ONU activation and MIB upload. Identifies ONU type based on the OMCI MIB upload results
*/

/** \page omcisvc_api OMCI Service Layer API
  See \ref omcisvc_api in API Reference chapter
*/
