OMA Lightweight M2M is a protocol from the Open Mobile Alliance for M2M or IoT device management.
Wakaama is not a library but files to be built with an application. It is written in C and designed to be portable on POSIX compliant systems.
Two compilation switches are used: LWM2M_CLIENT_MODE and LWM2M_SERVER_MODE. Defining LWM2M_CLIENT_MODE enables the LwM2M client interfaces. Defining LWM2M_SERVER_MODE enables the LwM2M Server interfaces. Both can be defined at the same time.
Wakaama is mono-threaded. An application can call a HandlePacket API to feed Wakaama with received LwM2M packets and a Step API to perform any pending LwM2M operations.
Wakaama provides APIs for a server application to send commands to registered LwM2M Clients. On client applications, Wakaama checks received commands for syntax and access rights and then dispatches them to the relevant objects.
Get the code by cloning the repository. Wakaama provides sample clients and server in its 'examples' directory. To try them just launch 'cmake' in any of its subdirectories then 'make'. You can find detailled instructions in the README at the root of the repository. You can try the wakaama sample client with the [Leshan Sandbox] by running:
Leshan provides libraries that help people develop their own Lightweight M2M server and client