void app_start(int, char**) { // setup the EthernetInterface eth.init(); // DHCP eth.connect(); // initialize the ipv4 tcp/ip stack lwipv4_socket_init(); // setup the M2MInterface srand(time(NULL)); uint16_t port = rand() % 65535 + 12345; srv = M2MInterfaceFactory::create_interface(observer,endpoint,type, lifetime,port,domain,M2MInterface::UDP,M2MInterface::LwIP_IPv4,context_address); // setup the Security object sec = M2MInterfaceFactory::create_security(M2MSecurity::M2MServer); sec->set_resource_value(M2MSecurity::M2MServerUri,address); sec->set_resource_value(M2MSecurity::SecurityMode, M2MSecurity::NoSecurity); // setup the Device object dev = M2MInterfaceFactory::create_device(); dev->create_resource(M2MDevice::Manufacturer,"Freescale"); dev->create_resource(M2MDevice::DeviceType,"frdm-k64f"); dev->create_resource(M2MDevice::ModelNumber,"M64FN1MOVLL12"); dev->create_resource(M2MDevice::SerialNumber,"EB1524XXXX"); // setup the sensor objects obj = M2MInterfaceFactory::create_object("loc"); M2MObjectInstance* ins = obj->create_object_instance(); M2MResource* resx = ins->create_dynamic_resource("x","accel",M2MResourceInstance::INTEGER,true); resx->set_operation(M2MBase::GET_PUT_ALLOWED); resx->set_value((const uint8_t*)"0",1); M2MResource* resy = ins->create_dynamic_resource("y","accel",M2MResourceInstance::INTEGER,true); resy->set_operation(M2MBase::GET_PUT_ALLOWED); resy->set_value((const uint8_t*)"0",1); // Assemble the list of objects to register M2MObjectList list; list.push_back(dev); list.push_back(obj); // setup registration event Ticker timer; timer.attach(®,&Registrar::update,20); // enable accelerometer printf("Initializied accelerometer\r\n"); accel.enable(); Ticker sampler; sampler.attach(sample,5); // schedule FunctionPointer1<void, M2MObjectList> fp(®, &Registrar::setup); minar::Scheduler::postCallback(fp.bind(list)); minar::Scheduler::postCallback(sample).period(minar::milliseconds(10000)); minar::Scheduler::start(); }
void Test_M2MInterfaceImpl::test_register_object() { M2MSecurity *sec = new M2MSecurity(M2MSecurity::M2MServer); m2msecurity_stub::int_value = 2; M2MObject *object = new M2MObject("test"); M2MObjectInstance *ins = object->create_object_instance(); ins->create_dynamic_resource("test","type",M2MResourceInstance::STRING,false,false); M2MObjectList list; list.push_back(object); String *val = new String("coaps://[2001:12:12:23::23:FF]:5685"); m2msecurity_stub::string_value = val; m2mnsdlinterface_stub::bool_value = true; m2mconnectionhandler_stub::bool_value = true; impl->register_object(sec,list); CHECK(impl->_current_state == M2MInterfaceImpl::STATE_REGISTER); impl->_register_ongoing = false; impl->_current_state = M2MInterfaceImpl::STATE_IDLE; impl->register_object(sec,list); CHECK(impl->_current_state == M2MInterfaceImpl::STATE_REGISTER); delete val; val = new String("coaps://[10.45.3.83:5685"); impl->_register_ongoing = false; impl->_current_state = M2MInterfaceImpl::STATE_IDLE; m2msecurity_stub::string_value = val; m2mnsdlinterface_stub::bool_value = true; m2mconnectionhandler_stub::bool_value = true; delete impl->_security; impl->_security = NULL; sec = new M2MSecurity(M2MSecurity::M2MServer); impl->register_object(sec,list); CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); CHECK(observer->error_occured == true); observer->error_occured = false; delete val; val = new String("coaps://10.45.3.83]:5685"); impl->_register_ongoing = false; impl->_current_state = M2MInterfaceImpl::STATE_IDLE; m2msecurity_stub::string_value = val; m2mnsdlinterface_stub::bool_value = true; m2mconnectionhandler_stub::bool_value = true; delete impl->_security; impl->_security = NULL; sec = new M2MSecurity(M2MSecurity::M2MServer); impl->register_object(sec,list); CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); CHECK(observer->error_occured == true); observer->error_occured = false; delete val; val = new String("coaps://10.45.3.83:5685"); delete impl->_security; impl->_security = NULL; sec = new M2MSecurity(M2MSecurity::M2MServer); impl->_register_ongoing = false; impl->_current_state = M2MInterfaceImpl::STATE_IDLE; m2msecurity_stub::string_value = val; m2mnsdlinterface_stub::bool_value = true; m2mconnectionhandler_stub::bool_value = true; impl->register_object(sec,list); CHECK(impl->_current_state == M2MInterfaceImpl::STATE_REGISTER); observer->error_occured = false; delete val; val = new String("coap://10.45.3.83:5685"); delete impl->_security; impl->_security = NULL; sec = new M2MSecurity(M2MSecurity::M2MServer); impl->_register_ongoing = false; impl->_current_state = M2MInterfaceImpl::STATE_IDLE; m2msecurity_stub::string_value = val; m2mnsdlinterface_stub::bool_value = true; m2mconnectionhandler_stub::bool_value = true; impl->register_object(sec,list); CHECK(impl->_current_state == M2MInterfaceImpl::STATE_REGISTER); delete val; val = new String("coap://10.45.3.83:5685"); impl->register_object(sec,list); CHECK(impl->_current_state == M2MInterfaceImpl::STATE_REGISTER); impl->_current_state = M2MInterfaceImpl::STATE_IDLE; m2mconnectionhandler_stub::bool_value = true; m2mnsdlinterface_stub::bool_value = false; delete impl->_security; impl->_security = NULL; sec = new M2MSecurity(M2MSecurity::M2MServer); impl->register_object(sec,list); CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); CHECK(observer->error_occured == true); impl->_current_state = M2MInterfaceImpl::STATE_IDLE; m2mconnectionhandler_stub::bool_value = false; m2mnsdlinterface_stub::bool_value = true; impl->register_object(sec,list); CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); CHECK(observer->error_occured == true); impl->_register_ongoing = false; impl->_current_state = M2MInterfaceImpl::STATE_BOOTSTRAP; m2mconnectionhandler_stub::bool_value = true; m2mnsdlinterface_stub::bool_value = true; impl->register_object(sec,list); CHECK(impl->_current_state == M2MInterfaceImpl::STATE_BOOTSTRAP); CHECK(observer->error_occured == true); impl->_current_state = M2MInterfaceImpl::STATE_IDLE; m2mconnectionhandler_stub::bool_value = true; m2mnsdlinterface_stub::bool_value = true; impl->register_object(sec,list); CHECK(impl->_current_state == M2MInterfaceImpl::STATE_IDLE); CHECK(observer->error_occured == true); impl->_current_state = M2MInterfaceImpl::STATE_BOOTSTRAP; m2mconnectionhandler_stub::bool_value = true; m2mnsdlinterface_stub::bool_value = true; impl->register_object(sec,list); CHECK(observer->error_occured == true); delete val; val = NULL; list.clear(); delete object; delete sec; }