OMCI gopacket library supports the encoding and decoding of ITU G.988 OMCI messages. Support for the Baseline Message Set has been completed and work is underway to support the Extended Message Set format.
The following OMCI message types currently have been coded and are covered satisfactory by unit tests.
The following OMCI message types currently have been coded and are partially covered by unit tests, but work still remains for sufficient/better unit test coverage.
The following OMCI message types currently have been coded but do not have any unit test coverage.
The following OMCI message types currently have not been coded.
As mentioned earlier, support for the Extended Message Set is underway. Currently, the following Message Types have this support and are covered by unit tests:
The following provides a list of message types that will eventually support the Extended Message Set in the expected order of implementation. The priority was chosen based on speed improvement requests of operations and ease of implementation.
GetCurrentDataRequest/Response
MibResetRequest/Response
RebootRequest/Response
SynchronizeTimeRequest/Response
CreateRequest/Response
DeleteRequest/Response
SetRequest/Response
GetNextRequest/Response
SetTableRequest/Response
MibUploadRequest/Response
MibUploadNextRequest/Response
GetAllAlarmsRequest/Response
GetAllAlarmsNextRequest/Response
StartSoftwareDownloadRequest/Response
EndSoftwareDownloadRequest/Response
CommitSoftwareRequest/Response
ActivateSoftwareRequest/Response
TestRequest/Response
The make test command can be used to create code coverage support for the library. The current coverage for version 1.0.0 (as of 4/21/2021) is:
File | Statement Coverage |
---|---|
layers.go | 100% |
mebase.go | 91.7% |
meframe.go | 50.8% |
messagetypes.go | 59.1% |
omci.go | 79.0% |
Besides OMCI Message decode/serialization, and associated unit tests, the following items would be needed or useful in a first official release of this library. Some changes are to be done in the generated OMCI ME code as well.
Also searching through the code for TODO statements will also yield additional areas of work to be performed.
This library is not a full OMCI stack for either an OLT or an ONU. It is focused primarily on packet decode/serialization and a variety of structs and functions that are useful for handling the creation of OMCI frames and handling decoded frames from the PON.
For an OLT-side OMCI stack, you would still need to write:
For an ONU-side OMCI stack, you would still need to write: