//The setup function is called once at startup of the sketch void setup() { // Add your initialization code here // Note : This will initialize Serial port on Arduino at 115200 bauds OC_LOG_INIT(); OC_LOG(DEBUG, TAG, PCF("OCServer is starting...")); uint16_t port = OC_WELL_KNOWN_PORT; // Connect to Ethernet or WiFi network if (ConnectToNetwork() != 0) { OC_LOG(ERROR, TAG, PCF("Unable to connect to network")); return; } // Initialize the OC Stack in Server mode if (OCInit(NULL, port, OC_SERVER) != OC_STACK_OK) { OC_LOG(ERROR, TAG, PCF("OCStack init error")); return; } // Declare and create the example resource: Light createLightResource(); }
int main(int argc, char** argv) { uint8_t addr[20] = {0}; uint8_t* paddr = NULL; uint16_t port = OC_WELL_KNOWN_PORT; uint8_t ifname[] = "wlan0"; pthread_t threadId; pthread_t threadId_presence; int opt; printf ("OCServer is starting...\n"); if (OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr)) == ERR_SUCCESS) { printf ("Starting ocserver on address %s:%d\n",addr,port); paddr = addr; } /* * Init IoTivity as a SERVER. */ if (OCInit((char *) paddr, port, OC_SERVER) != OC_STACK_OK) { printf ("OCStack init error\n"); return 0; } OCSetDefaultDeviceEntityHandler(OCDeviceEntityHandlerCb); OCStackResult deviceResult = SetDeviceInfo(contentType, dateOfManufacture, deviceName, deviceUUID, firmwareVersion, hostName, manufacturerName, manufacturerUrl, modelNumber, platformVersion, supportUrl, version); deviceResult = OCSetDeviceInfo(deviceInfo); if (deviceResult != OC_STACK_OK) { printf ("Device Registration failed!\n"); exit (EXIT_FAILURE); } DeleteDeviceInfo(); /* * Create ONE light resource. */ createLightResource(gResourceUri, &Light); printf ("Entering ocserver main loop...\n"); signal(SIGINT, handleSigInt); while (!gQuitFlag) { /* * Main IoTivity function for processing. */ if (OCProcess() != OC_STACK_OK) { printf ("OCStack process error\n"); return 0; } sleep(2); } if (OCStop() != OC_STACK_OK) { printf ("OCStack process error\n"); } return 0; }
int main() { OIC_LOG(DEBUG, TAG, "OCServer is starting..."); SetPersistentHandler(&ps); if (OCInit(NULL, 0, OC_SERVER) != OC_STACK_OK) { OIC_LOG(ERROR, TAG, "OCStack init error"); return 0; } /* * Declare and create the example resource: Light */ createLightResource(gResourceUri, &Light); CASelectCipherSuite(TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8); struct timespec timeout; timeout.tv_sec = 0; timeout.tv_nsec = 100000000L; // Break from loop with Ctrl-C OIC_LOG(INFO, TAG, "Entering ocserver main loop..."); signal(SIGINT, handleSigInt); while (!gQuitFlag) { if (OCProcess() != OC_STACK_OK) { OIC_LOG(ERROR, TAG, "OCStack process error"); return 0; } nanosleep(&timeout, NULL); } OIC_LOG(INFO, TAG, "Exiting ocserver main loop..."); if (OCStop() != OC_STACK_OK) { OIC_LOG(ERROR, TAG, "OCStack process error"); } return 0; }
//The setup function is called once at startup of the sketch void setup() { // Add your initialization code here // Note : This will initialize Serial port on Arduino at 115200 bauds // OC_LOG_INIT(); Serial.begin(115200); Serial1.begin(115200); // OC_LOG(DEBUG, TAG, PCF("OCServer is starting...")); // OC_LOG(DEBUG, TAG, PCF("OCServer is starting...")); // Connect to Ethernet or WiFi network if (ConnectToNetwork() != 0) { // OC_LOG(ERROR, TAG, PCF("Unable to connect to network")); return; } // Initialize the OC Stack in Server mode if (OCInit(NULL, 0, OC_SERVER) != OC_STACK_OK) { // OC_LOG(ERROR, TAG, PCF("OCStack init error")); return; } // Declare and create the example resource: Light createLightResource(); speaker.state = 0; speaker.volume = 40; speaker.next_song = 1; speaker.present_song = 1; speaker.time = 0; //OC_LOG(DEBUG, TAG, PCF("소라 놋북 터진 날 15.07.31 ...")); }
int main() { OIC_LOG_V(INFO, TAG, "Starting ocserver"); if (OCInit(NULL, 0, OC_SERVER) != OC_STACK_OK) { OIC_LOG(ERROR, TAG, "OCStack init error"); return 0; } /* * Declare and create the example resource: Light */ if(createLightResource() != OC_STACK_OK) { OIC_LOG(ERROR, TAG, "OCStack cannot create resource..."); } // Break from loop with Ctrl-C OIC_LOG(INFO, TAG, "Entering ocserver main loop..."); signal(SIGINT, handleSigInt); while (!gQuitFlag) { if (OCProcess() != OC_STACK_OK) { OIC_LOG(ERROR, TAG, "OCStack process error"); return 0; } sleep(1); } OIC_LOG(INFO, TAG, "Exiting ocserver main loop..."); if (OCStop() != OC_STACK_OK) { OIC_LOG(ERROR, TAG, "OCStack process error"); } return 0; }
void EventCallbackInApp(ESResult esResult, ESEnrolleeState enrolleeState) { Serial.println("callback!!! in app"); if(esResult == ES_OK) { if(!g_OnBoardingSucceeded){ Serial.println("Device is successfully OnBoarded"); g_OnBoardingSucceeded = true; } else if(g_OnBoardingSucceeded & enrolleeState == ES_ON_BOARDED_STATE){ Serial.println("Device is successfully OnBoared with SoftAP"); g_ProvisioningSucceeded = true; } if(enrolleeState == ES_PROVISIONED_STATE) { // Create the Light resource. createLightResource(); } } else if (esResult == ES_ERROR) { if(g_OnBoardingSucceeded) { OIC_LOG_V(ERROR, TAG, "Failure in Provisioning. \ Current Enrollee State: %d",enrolleeState); g_OnBoardingSucceeded = false; } else if(g_ProvisioningSucceeded) { OIC_LOG_V(ERROR, TAG, "Failure in connect to target network. \ Current Enrollee State: %d",enrolleeState); g_ProvisioningSucceeded = false; } }
int main(int argc, char* argv[]) { uint8_t addr[20] = {0}; uint8_t* paddr = NULL; uint16_t port = OC_WELL_KNOWN_PORT; uint8_t ifname[] = "eth0"; pthread_t threadId; pthread_t threadId_presence; int opt; while ((opt = getopt(argc, argv, "o:")) != -1) { switch(opt) { case 'o': gObserveNotifyType = atoi(optarg); break; default: PrintUsage(); return -1; } } if ((gObserveNotifyType != 0) && (gObserveNotifyType != 1)) { PrintUsage(); return -1; } OC_LOG(DEBUG, TAG, "OCServer is starting..."); /*Get Ip address on defined interface and initialize coap on it with random port number * this port number will be used as a source port in all coap communications*/ if ( OCGetInterfaceAddress(ifname, sizeof(ifname), AF_INET, addr, sizeof(addr)) == ERR_SUCCESS) { OC_LOG_V(INFO, TAG, "Starting ocserver on address %s:%d",addr,port); paddr = addr; } if (OCInit((char *) paddr, port, OC_SERVER) != OC_STACK_OK) { OC_LOG(ERROR, TAG, "OCStack init error"); return 0; } #ifdef WITH_PRESENCE if (OCStartPresence(0) != OC_STACK_OK) { OC_LOG(ERROR, TAG, "OCStack presence/discovery error"); return 0; } #endif OCSetDefaultDeviceEntityHandler(OCDeviceEntityHandlerCb); OCStackResult deviceResult = SetDeviceInfo(contentType, dateOfManufacture, deviceName, deviceUUID, firmwareVersion, hostName, manufacturerName, manufacturerUrl, modelNumber, platformVersion, supportUrl, version); if (deviceResult != OC_STACK_OK) { OC_LOG(INFO, TAG, "Device Registration failed!"); exit (EXIT_FAILURE); } deviceResult = OCSetDeviceInfo(deviceInfo); if (deviceResult != OC_STACK_OK) { OC_LOG(INFO, TAG, "Device Registration failed!"); exit (EXIT_FAILURE); } /* * Declare and create the example resource: Light */ createLightResource(gResourceUri, &Light); // Initialize observations data structure for the resource for (uint8_t i = 0; i < SAMPLE_MAX_NUM_OBSERVATIONS; i++) { interestedObservers[i].valid = false; } /* * Create a thread for changing the representation of the Light */ pthread_create (&threadId, NULL, ChangeLightRepresentation, (void *)NULL); /* * Create a thread for generating changes that cause presence notifications * to be sent to clients */ pthread_create(&threadId_presence, NULL, presenceNotificationGenerator, (void *)NULL); // Break from loop with Ctrl-C OC_LOG(INFO, TAG, "Entering ocserver main loop..."); DeleteDeviceInfo(); signal(SIGINT, handleSigInt); while (!gQuitFlag) { if (OCProcess() != OC_STACK_OK) { OC_LOG(ERROR, TAG, "OCStack process error"); return 0; } sleep(2); } /* * Cancel the Light thread and wait for it to terminate */ pthread_cancel(threadId); pthread_join(threadId, NULL); pthread_cancel(threadId_presence); pthread_join(threadId_presence, NULL); OC_LOG(INFO, TAG, "Exiting ocserver main loop..."); if (OCStop() != OC_STACK_OK) { OC_LOG(ERROR, TAG, "OCStack process error"); } return 0; }
OCEntityHandlerResult ProcessPostRequest (OCEntityHandlerRequest *ehRequest, OCEntityHandlerResponse *response, char *payload, uint16_t maxPayloadSize) { OCEntityHandlerResult ehResult = OC_EH_OK; char *respPLPost_light = NULL; cJSON *json; cJSON *format; /* * The entity handler determines how to process a POST request. * Per the REST paradigm, POST can also be used to update representation of existing * resource or create a new resource. * In the sample below, if the POST is for /a/light then a new instance of the Light * resource is created with default representation (if representation is included in * POST payload it can be used as initial values) as long as the instance is * lesser than max new instance count. Once max instance count is reached, POST on * /a/light updated the representation of /a/light (just like PUT) */ if (ehRequest->resource == Light.handle) { if (gCurrLightInstance < SAMPLE_MAX_NUM_POST_INSTANCE) { // Create new Light instance char newLightUri[URI_MAXSIZE]; snprintf(newLightUri, URI_MAXSIZE, "/a/light/%d", gCurrLightInstance); json = cJSON_CreateObject(); cJSON_AddStringToObject(json,"href",gResourceUri); cJSON_AddItemToObject(json, "rep", format=cJSON_CreateObject()); cJSON_AddStringToObject(format, "createduri", (char *) newLightUri); if (0 == createLightResource (newLightUri, &gLightInstance[gCurrLightInstance])) { OC_LOG (INFO, TAG, "Created new Light instance\n"); gLightInstance[gCurrLightInstance].state = 0; gLightInstance[gCurrLightInstance].power = 0; gCurrLightInstance++; respPLPost_light = cJSON_Print(json); strncpy ((char *)response->resourceUri, newLightUri, MAX_URI_LENGTH); ehResult = OC_EH_RESOURCE_CREATED; } cJSON_Delete(json); } else { // Update repesentation of /a/light Light.state = true; Light.power = 11; respPLPost_light = constructJsonResponse(ehRequest); } } else { for (int i = 0; i < SAMPLE_MAX_NUM_POST_INSTANCE; i++) { if (ehRequest->resource == gLightInstance[i].handle) { gLightInstance[i].state = true; gLightInstance[i].power = 22; if (i == 0) { respPLPost_light = constructJsonResponse(ehRequest); break; } else if (i == 1) { respPLPost_light = constructJsonResponse(ehRequest); } } } } if ((respPLPost_light != NULL) && (maxPayloadSize > strlen ((char *)respPLPost_light))) { strncpy(payload, respPLPost_light, strlen((char *)respPLPost_light)); } else { OC_LOG_V (INFO, TAG, "Response buffer: %d bytes is too small", maxPayloadSize); ehResult = OC_EH_ERROR; } free(respPLPost_light); return ehResult; }
int main(int argc, char* argv[]) { #ifdef RA_ADAPTER char host[] = "localhost"; char user[] = "test1"; char pass[] = "intel123"; char empstr[] = ""; OCRAInfo_t rainfo = {}; rainfo.hostname = host; rainfo.port = 5222; rainfo.xmpp_domain = host; rainfo.username = user; rainfo.password = pass; rainfo.resource = empstr; rainfo.user_jid = empstr; rainfo.jidbound = jidbound; #endif int opt = 0; while ((opt = getopt(argc, argv, "o:s:p:d:u:w:r:j:")) != -1) { switch(opt) { case 'o': gObserveNotifyType = atoi(optarg); break; #ifdef RA_ADAPTER case 's': rainfo.hostname = optarg; break; case 'p': rainfo.port = atoi(optarg); break; case 'd': rainfo.xmpp_domain = optarg; break; case 'u': rainfo.username = optarg; break; case 'w': rainfo.password = optarg; break; case 'j': rainfo.user_jid = optarg; break; case 'r': rainfo.resource = optarg; break; #endif default: PrintUsage(); return -1; } } if ((gObserveNotifyType != 0) && (gObserveNotifyType != 1)) { PrintUsage(); return -1; } #ifdef RA_ADAPTER OCSetRAInfo(&rainfo); #endif OIC_LOG(DEBUG, TAG, "OCServer is starting..."); if (OCInit(NULL, 0, OC_SERVER) != OC_STACK_OK) { OIC_LOG(ERROR, TAG, "OCStack init error"); return 0; } #ifdef WITH_PRESENCE if (OCStartPresence(0) != OC_STACK_OK) { OIC_LOG(ERROR, TAG, "OCStack presence/discovery error"); return 0; } #endif OCSetDefaultDeviceEntityHandler(OCDeviceEntityHandlerCb, NULL); OCStackResult registrationResult = SetPlatformInfo(platformID, manufacturerName, manufacturerUrl, modelNumber, dateOfManufacture, platformVersion, operatingSystemVersion, hardwareVersion, firmwareVersion, supportUrl, systemTime); if (registrationResult != OC_STACK_OK) { OIC_LOG(INFO, TAG, "Platform info setting failed locally!"); exit (EXIT_FAILURE); } registrationResult = OCSetPlatformInfo(platformInfo); if (registrationResult != OC_STACK_OK) { OIC_LOG(INFO, TAG, "Platform Registration failed!"); exit (EXIT_FAILURE); } registrationResult = SetDeviceInfo(deviceName, specVersion, dataModelVersions); if (registrationResult != OC_STACK_OK) { OIC_LOG(INFO, TAG, "Device info setting failed locally!"); exit (EXIT_FAILURE); } OCResourcePayloadAddStringLL(&deviceInfo.types, "oic.d.tv"); registrationResult = OCSetDeviceInfo(deviceInfo); if (registrationResult != OC_STACK_OK) { OIC_LOG(INFO, TAG, "Device Registration failed!"); exit (EXIT_FAILURE); } /* * Declare and create the example resource: Light */ createLightResource(gResourceUri, &Light); // Initialize observations data structure for the resource for (uint8_t i = 0; i < SAMPLE_MAX_NUM_OBSERVATIONS; i++) { interestedObservers[i].valid = false; } /* * Create a thread for generating changes that cause presence notifications * to be sent to clients */ #ifdef WITH_PRESENCE pthread_create(&threadId_presence, NULL, presenceNotificationGenerator, (void *)NULL); #endif // Break from loop with Ctrl-C OIC_LOG(INFO, TAG, "Entering ocserver main loop..."); DeletePlatformInfo(); DeleteDeviceInfo(); signal(SIGINT, handleSigInt); while (!gQuitFlag) { if (OCProcess() != OC_STACK_OK) { OIC_LOG(ERROR, TAG, "OCStack process error"); return 0; } } if (observeThreadStarted) { pthread_cancel(threadId_observe); pthread_join(threadId_observe, NULL); } pthread_cancel(threadId_presence); pthread_join(threadId_presence, NULL); OIC_LOG(INFO, TAG, "Exiting ocserver main loop..."); if (OCStop() != OC_STACK_OK) { OIC_LOG(ERROR, TAG, "OCStack process error"); } return 0; }
OCEntityHandlerResult ProcessPostRequest (OCEntityHandlerRequest *ehRequest, OCEntityHandlerResponse *response, OCRepPayload** payload) { OCEntityHandlerResult ehResult = OC_EH_OK; OCRepPayload *respPLPost_light = nullptr; /* * The entity handler determines how to process a POST request. * Per the REST paradigm, POST can also be used to update representation of existing * resource or create a new resource. * In the sample below, if the POST is for /a/light then a new instance of the Light * resource is created with default representation (if representation is included in * POST payload it can be used as initial values) as long as the instance is * lesser than max new instance count. Once max instance count is reached, POST on * /a/light updated the representation of /a/light (just like PUT) */ if (ehRequest->resource == Light.handle) { if (gCurrLightInstance < SAMPLE_MAX_NUM_POST_INSTANCE) { // Create new Light instance char newLightUri[URI_MAXSIZE]; snprintf(newLightUri, URI_MAXSIZE, "/a/light/%d", gCurrLightInstance); respPLPost_light = OCRepPayloadCreate(); OCRepPayloadSetUri(respPLPost_light, gResourceUri); OCRepPayloadSetPropString(respPLPost_light, "createduri", newLightUri); if (0 == createLightResource (newLightUri, &gLightInstance[gCurrLightInstance])) { OIC_LOG (INFO, TAG, "Created new Light instance\n"); gLightInstance[gCurrLightInstance].state = 0; gLightInstance[gCurrLightInstance].power = 0; gCurrLightInstance++; strncpy ((char *)response->resourceUri, newLightUri, MAX_URI_LENGTH); ehResult = OC_EH_RESOURCE_CREATED; } } else { // Update repesentation of /a/light Light.state = true; Light.power = 11; respPLPost_light = constructResponse(ehRequest); } } else { for (int i = 0; i < SAMPLE_MAX_NUM_POST_INSTANCE; i++) { if (ehRequest->resource == gLightInstance[i].handle) { gLightInstance[i].state = true; gLightInstance[i].power = 22; if (i == 0) { respPLPost_light = constructResponse(ehRequest); break; } else if (i == 1) { respPLPost_light = constructResponse(ehRequest); } } } } if ((respPLPost_light != NULL)) { *payload = respPLPost_light; } else { OIC_LOG(INFO, TAG, "Payload was NULL"); ehResult = OC_EH_ERROR; } return ehResult; }