OMCI gopacket library supports the encoding and decoding of ITU G.988 OMCI messages. Support for the Baseline and Extended Message Set has been completed for basic serialization and decode and some support for the MEFrame library.
Future work is to focus on getting unit test coverage >= 75% for the basic serialization and decode objects before work for additional extended message set support in the MEFrame library.
In v2.0.0, the directory/package structure was reorganized (no API changes otherwise) in order to separate message type functionality on a filename basis. This will allow for future features and bug fixes to be better localized and to allow for better unit test coverage reporting.
Bug fixes will typically result in an increment of the third number in the version string and additional feature support will typically result in incrementing the second number.
The make test command can be used to create code coverage support for the library. The current coverage for version 2.0.0 (as of 9/08/2021) is:
Entire Project: 97.3% of files and 70.2% of statements Generated Subdirectory: 98.5% of files and 51.9% of statements meframe Subdirectory: 80% of files and 55.4% of statements
Main Message Directory (below):
File | Coverage | < 75% |
---|---|---|
alarms.go | 74.3% | Y |
avc.go | 86% | |
create.go | 82.5% | |
delete.go | 85.5% | |
get.go | 78.4% | |
getcurrent.go | 69.4% | |
getnext.go | 79.3% | |
layers.go | 100% | |
mebase.go | 93.3% | |
messagetypes.go | 100% | |
mibreset.go | 76.6% | |
mibupload.go | 77% | |
omci.go | 90.6% | |
reboot.go | 81.2% | |
set.go | 77.3% | |
settable.go | 81.5% | |
software.go | 75.2% | |
synctime.go | 79.3% | |
test.go | 79.9% |
A few additional features have been requested and are listed below for future inclusion in the package:
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: