#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <cl.h>
void help(const char *app_name);
void provisioning();
int main(int argc, char **argv)
{
int c;
while ((c = getopt (argc, argv, "h?")) != -1)
{
switch(c)
{
case 'h':
case '?':
default:
help(argv[0]);
}
}
provisioning();
return 0;
}
// ******************************************
void help(const char *app_name)
{
printf("%s.\n\n", app_name);
printf("Provisioning example.\n\n");
printf("Usage: %s [-h|-?]\n\n", app_name);
printf(" -h This help\n");
printf("Examples:\n");
printf("%s\n", app_name);
exit(1);
}
void provisioning_status_handler(const cl_provisioning_event_t status)
{
switch (status)
{
case CL_PROVISIONING_ERROR:
printf("Provisioning error.\n");
break;
case CL_PROVISIONING_BIND_ERROR:
printf("Bind error.\n");
break;
case CL_PROVISIONING_WAITING_CLIENT:
printf("Waiting a client.\n");
break;
case CL_PROVISIONING_CLIENT_CONNECTED:
printf("Client connected.\n");
break;
case CL_PROVISIONING_CLIENT_DISCONNECTED:
printf("Client disconnected.\n");
break;
case CL_PROVISIONING_DATA_RECEIVED:
printf("Data received.\n");
break;
case CL_PROVISIONING_RESPONSE_SENT:
printf("Response sent.\n");
break;
case CL_PROVISIONING_FINISHED:
printf("Finished.\n");
break;
}
}
/*
{"region":"[REGION]","associationToken":"[ASSOCIATION_TOKEN]","ssid":"[SSID]","password":"[PASSWORD]"}
*/
void provisioning_data_handler(const unsigned char *recvbuf, size_t recvlen)
{
printf("Data received: %s\n", recvbuf);
}
void provisioning()
{
cl_return_t result;
printf("[.]. Initialize context...\n");
strcpy(cl_handle.developer_key, DEVELOPER_KEY);
strcpy(cl_handle.iot_brand_name, IOT_BRAND_NAME);
strcpy(cl_handle.iot_model_name, IOT_MODEL_NAME);
strcpy(cl_handle.iot_submodel_name, IOT_SUBMODEL_NAME);
strcpy(cl_handle.iot_system, IOT_SYSTEM);
printf("[.]. Initialize...\n");
result = cl_provisioning_init(&cl_handle);
switch (result) {
case CL_SUCCESS:
printf("[+]. Initialization ok.\n");
break;
case CL_FAILURE:
default:
// OTHER
printf("[-]. Failed to init the library provisioning.\n");
break;
}
printf("[.]. Initialize callbacks...\n");
cl_provisioning_get_status(provisioning_status_handler);
cl_provisioning_get_data(provisioning_data_handler);
printf("[.]. Start...\n");
result = cl_provisioning_start();
switch (result) {
case CL_SUCCESS:
printf("[+]. Success.\n");
break;
case CL_FAILURE:
default:
// OTHER
printf("[-]. Error during the provisioning.\n");
break;
}
printf("[.]. Deinit...\n");
result = cl_provisioning_deinit();
switch (result) {
case CL_SUCCESS:
printf("[+]. Deinit ok.\n");
break;
case CL_FAILURE:
default:
// OTHER
printf("[-]. Failed to deinit the library provisioning.\n");
break;
}
}