Main Concept

This software is done to give the oportunity to manage device threw CWMP, the protocole specified by Broadband Forum. It has been done into Orange Labs by O.Beyler to be easy to expand and to allow lot of evolution. For example, each RPC Method could be replace by a new version without any impact on others. The CWMP protocol define mandatory RPCMethod and some are not mandatory. It has been done originally into Orange Labs, and it's now maintain by AgileACS team.

How build and start

As this project use maven3, you only have to do this:

    maven clean install
    maven assembly:assembly

It will produce a zip with all necessary to start into target directory. unzip it where you want to use it and modify the data/usine.txt to specify the URL of ACS. This file defines default parameters values for the first boot of the CPE. After this first boot, the defaults values aren't use anymore by CPE. It uses the saved parameters located into data/data.sav. So, if you need to redefine the bootstrap, you have just to modify the usine.txt file and to delete the data.sav.

Architecture

Data Model

Principle

A datamodel is based on TR106 specification. It's a set of key value often represented as a tree. Some argues are mandatory and the behavior are well define. It has been define into DataModelBundle.

Root

As the root of a data model can be Device or InternetGatewayDevice, the definition of the root is given by a specific bundle with can be DeviceBundle of IGDBundle.

Parameter's definition

Setter Interface

If you need to define a specific behavior when a set is done on a parameter value, you can create a Setter which must implement this method :

    void set(final Parameter param, final Object obj) throws Fault;

It will be invoked when Modus received from ACS a SetParameterValues on a parameter.

Getter Interface

If you need to define a specific behavior to get parameter value, you can create a Getter which must implement this method :

    Object get(String sessionId);

It will be invoked when Modus received from ACS a GetParameterValues on a parameter.

CheckCallBack Interface

void check(final Object value) throws Fault;

It will be invoked when Modus received from ACS a SetParameterValues on a parameter. But before setting the value, each CheckCallback will be invoked to verify if the value is correct. If it's not correct a Fault is return to the ACS request.

Factory Interface

This interface is usefull to implement a specific behaviour on an object when the RPCMethod AddObject or

int createObjectInstance(long instanceId, IParameterData data) throws Fault;
int deleteObjectInstance(long instanceId, IParameterData data) throws Fault;

Observable

All parameter of the data model implement Observable design pattern. So, if you need to be notified from any update you could observe it.

sample

Initialisation

Communication layer