Skip to content

Commit

Permalink
apps: change app style for init and null check logic
Browse files Browse the repository at this point in the history
Signed-off-by: Hyundo Lee <[email protected]>
  • Loading branch information
hdlee27 committed Mar 30, 2020
1 parent 27ec88b commit afda642
Show file tree
Hide file tree
Showing 19 changed files with 491 additions and 257 deletions.
19 changes: 17 additions & 2 deletions apps/esp8266/st_air_monitor/main/caps_airQualitySensor.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ static int caps_airQualitySensor_get_airQuality_value(caps_airQualitySensor_data
{
if (!caps_data) {
printf("caps_data is NULL\n");
return NULL;
return caps_helper_airQualitySensor.attr_airQuality.min - 1;
}
return caps_data->airQuality_value;
}
Expand Down Expand Up @@ -65,7 +65,16 @@ static void caps_airQualitySensor_attr_airQuality_send(caps_airQualitySensor_dat
uint8_t evt_num = 1;
int sequence_no;

if (!caps_data || !caps_data->handle) {
printf("fail to get handle\n");
return;
}

cap_evt = st_cap_attr_create_int((char *) caps_helper_airQualitySensor.attr_airQuality.name, caps_data->airQuality_value, caps_data->airQuality_unit);
if (!cap_evt) {
printf("fail to create cap_evt\n");
return;
}

sequence_no = st_cap_attr_send(caps_data->handle, evt_num, &cap_evt);
if (sequence_no < 0)
Expand Down Expand Up @@ -95,7 +104,6 @@ caps_airQualitySensor_data_t *caps_airQualitySensor_initialize(IOT_CTX *ctx, con

memset(caps_data, 0, sizeof(caps_airQualitySensor_data_t));

caps_data->handle = st_cap_handle_init(ctx, component, caps_helper_airQualitySensor.id , caps_airQualitySensor_init_cb, caps_data);
caps_data->init_usr_cb = init_usr_cb;
caps_data->usr_data = usr_data;

Expand All @@ -108,5 +116,12 @@ caps_airQualitySensor_data_t *caps_airQualitySensor_initialize(IOT_CTX *ctx, con
caps_data->airQuality_value = caps_helper_airQualitySensor.attr_airQuality.min;
caps_data->airQuality_unit = (char *)caps_helper_airQualitySensor.attr_airQuality.units[CAPS_HELPER_AIR_QUALITY_SENSOR_UNIT_CAQI];

if (ctx) {
caps_data->handle = st_cap_handle_init(ctx, component, caps_helper_airQualitySensor.id , caps_airQualitySensor_init_cb, caps_data);
}
if (!caps_data->handle) {
printf("fail to init airQuality handle\n");
}

return caps_data;
}
46 changes: 26 additions & 20 deletions apps/esp8266/st_air_monitor/main/caps_alarm.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,11 @@ static void caps_alarm_attr_alarm_send(caps_alarm_data_t *caps_data)
uint8_t evt_num = 1;
int sequence_no;

if (!caps_data || !caps_data->handle) {
printf("fail to get handle\n");
return;
}

cap_evt = st_cap_attr_create_string((char *)caps_helper_alarm.attr_alarm.name,
caps_data->alarm_value, NULL);

Expand Down Expand Up @@ -134,7 +139,6 @@ caps_alarm_data_t *caps_alarm_initialize(IOT_CTX *ctx, const char *component, vo

memset(caps_data, 0, sizeof(caps_alarm_data_t));

caps_data->handle = st_cap_handle_init(ctx, component, caps_helper_alarm.id , caps_alarm_init_cb, caps_data);
caps_data->init_usr_cb = init_usr_cb;
caps_data->usr_data = usr_data;

Expand All @@ -144,26 +148,28 @@ caps_alarm_data_t *caps_alarm_initialize(IOT_CTX *ctx, const char *component, vo

caps_data->alarm_value = (char *)caps_helper_alarm.attr_alarm.values[CAPS_HELPER_ALARM_VALUE_OFF];

err = st_cap_cmd_set_cb(caps_data->handle, caps_helper_alarm.cmd_both.name, caps_alarm_cmd_both_cb, caps_data);
if (err) {
printf("fail to set cmd_cb for both\n");
return NULL;
}
err = st_cap_cmd_set_cb(caps_data->handle, caps_helper_alarm.cmd_siren.name, caps_alarm_cmd_siren_cb, caps_data);
if (err) {
printf("fail to set cmd_cb for siren\n");
return NULL;
if (ctx) {
caps_data->handle = st_cap_handle_init(ctx, component, caps_helper_alarm.id , caps_alarm_init_cb, caps_data);
}
err = st_cap_cmd_set_cb(caps_data->handle, caps_helper_alarm.cmd_off.name, caps_alarm_cmd_off_cb, caps_data);
if (err) {
printf("fail to set cmd_cb for off\n");
return NULL;
if (caps_data->handle) {
err = st_cap_cmd_set_cb(caps_data->handle, caps_helper_alarm.cmd_both.name, caps_alarm_cmd_both_cb, caps_data);
if (err) {
printf("fail to set cmd_cb for both\n");
}
err = st_cap_cmd_set_cb(caps_data->handle, caps_helper_alarm.cmd_siren.name, caps_alarm_cmd_siren_cb, caps_data);
if (err) {
printf("fail to set cmd_cb for siren\n");
}
err = st_cap_cmd_set_cb(caps_data->handle, caps_helper_alarm.cmd_off.name, caps_alarm_cmd_off_cb, caps_data);
if (err) {
printf("fail to set cmd_cb for off\n");
}
err = st_cap_cmd_set_cb(caps_data->handle, caps_helper_alarm.cmd_strobe.name, caps_alarm_cmd_strobe_cb, caps_data);
if (err) {
printf("fail to set cmd_cb for strobe\n");
}
} else {
printf("fail to init alarm handle\n");
}
err = st_cap_cmd_set_cb(caps_data->handle, caps_helper_alarm.cmd_strobe.name, caps_alarm_cmd_strobe_cb, caps_data);
if (err) {
printf("fail to set cmd_cb for strobe\n");
return NULL;
}

return caps_data;
}
19 changes: 17 additions & 2 deletions apps/esp8266/st_air_monitor/main/caps_carbonDioxideMeasurement.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ static int caps_carbonDioxideMeasurement_get_carbonDioxide_value(caps_carbonDiox
{
if (!caps_data) {
printf("caps_data is NULL\n");
return NULL;
return caps_helper_carbonDioxideMeasurement.attr_carbonDioxide.min - 1;
}
return caps_data->carbonDioxide_value;
}
Expand Down Expand Up @@ -65,7 +65,16 @@ static void caps_carbonDioxideMeasurement_attr_carbonDioxide_send(caps_carbonDio
uint8_t evt_num = 1;
int sequence_no;

if (!caps_data || !caps_data->handle) {
printf("fail to get handle\n");
return;
}

cap_evt = st_cap_attr_create_int((char *) caps_helper_carbonDioxideMeasurement.attr_carbonDioxide.name, caps_data->carbonDioxide_value, caps_data->carbonDioxide_unit);
if (!cap_evt) {
printf("fail to create cap_evt\n");
return;
}

sequence_no = st_cap_attr_send(caps_data->handle, evt_num, &cap_evt);
if (sequence_no < 0)
Expand Down Expand Up @@ -95,7 +104,6 @@ caps_carbonDioxideMeasurement_data_t *caps_carbonDioxideMeasurement_initialize(I

memset(caps_data, 0, sizeof(caps_carbonDioxideMeasurement_data_t));

caps_data->handle = st_cap_handle_init(ctx, component, caps_helper_carbonDioxideMeasurement.id , caps_carbonDioxideMeasurement_init_cb, caps_data);
caps_data->init_usr_cb = init_usr_cb;
caps_data->usr_data = usr_data;

Expand All @@ -108,5 +116,12 @@ caps_carbonDioxideMeasurement_data_t *caps_carbonDioxideMeasurement_initialize(I
caps_data->carbonDioxide_value = caps_helper_carbonDioxideMeasurement.attr_carbonDioxide.min;
caps_data->carbonDioxide_unit = (char *)caps_helper_carbonDioxideMeasurement.attr_carbonDioxide.units[CAPS_HELPER_CARBON_DIOXIDE_MEASUREMENT_UNIT_PPM];

if (ctx) {
caps_data->handle = st_cap_handle_init(ctx, component, caps_helper_carbonDioxideMeasurement.id , caps_carbonDioxideMeasurement_init_cb, caps_data);
}
if (!caps_data->handle) {
printf("fail to init carbonDioxideMeasurement handle\n");
}

return caps_data;
}
13 changes: 12 additions & 1 deletion apps/esp8266/st_air_monitor/main/caps_carbonMonoxideDetector.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,11 @@ static void caps_carbonMonoxideDetector_attr_carbonMonoxide_send(caps_carbonMono
uint8_t evt_num = 1;
int sequence_no;

if (!caps_data || !caps_data->handle) {
printf("fail to get handle\n");
return;
}

cap_evt = st_cap_attr_create_string((char *)caps_helper_carbonMonoxideDetector.attr_carbonMonoxide.name,
caps_data->carbonMonoxide_value, NULL);

Expand Down Expand Up @@ -78,7 +83,6 @@ caps_carbonMonoxideDetector_data_t *caps_carbonMonoxideDetector_initialize(IOT_C

memset(caps_data, 0, sizeof(caps_carbonMonoxideDetector_data_t));

caps_data->handle = st_cap_handle_init(ctx, component, caps_helper_carbonMonoxideDetector.id , caps_carbonMonoxideDetector_init_cb, caps_data);
caps_data->init_usr_cb = init_usr_cb;
caps_data->usr_data = usr_data;

Expand All @@ -88,5 +92,12 @@ caps_carbonMonoxideDetector_data_t *caps_carbonMonoxideDetector_initialize(IOT_C

caps_data->carbonMonoxide_value = (char *)caps_helper_carbonMonoxideDetector.attr_carbonMonoxide.values[CAPS_HELPER_CARBON_MONOXIDE_DETECTOR_VALUE_CLEAR];

if (ctx) {
caps_data->handle = st_cap_handle_init(ctx, component, caps_helper_carbonMonoxideDetector.id , caps_carbonMonoxideDetector_init_cb, caps_data);
}
if (!caps_data->handle) {
printf("fail to init switchLevel handle\n");
}

return caps_data;
}
19 changes: 17 additions & 2 deletions apps/esp8266/st_air_monitor/main/caps_formaldehydeMeasurement.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ static int caps_formaldehydeMeasurement_get_formaldehydeLevel_value(caps_formald
{
if (!caps_data) {
printf("caps_data is NULL\n");
return NULL;
return caps_helper_formaldehydeMeasurement.attr_formaldehydeLevel.min - 1;
}
return caps_data->formaldehydeLevel_value;
}
Expand Down Expand Up @@ -65,7 +65,16 @@ static void caps_formaldehydeMeasurement_attr_formaldehydeLevel_send(caps_formal
uint8_t evt_num = 1;
int sequence_no;

if (!caps_data || !caps_data->handle) {
printf("fail to get handle\n");
return;
}

cap_evt = st_cap_attr_create_int((char *) caps_helper_formaldehydeMeasurement.attr_formaldehydeLevel.name, caps_data->formaldehydeLevel_value, caps_data->formaldehydeLevel_unit);
if (!cap_evt) {
printf("fail to create cap_evt\n");
return;
}

sequence_no = st_cap_attr_send(caps_data->handle, evt_num, &cap_evt);
if (sequence_no < 0)
Expand Down Expand Up @@ -95,7 +104,6 @@ caps_formaldehydeMeasurement_data_t *caps_formaldehydeMeasurement_initialize(IOT

memset(caps_data, 0, sizeof(caps_formaldehydeMeasurement_data_t));

caps_data->handle = st_cap_handle_init(ctx, component, caps_helper_formaldehydeMeasurement.id, caps_formaldehydeMeasurement_init_cb, caps_data);
caps_data->init_usr_cb = init_usr_cb;
caps_data->usr_data = usr_data;

Expand All @@ -108,5 +116,12 @@ caps_formaldehydeMeasurement_data_t *caps_formaldehydeMeasurement_initialize(IOT
caps_data->formaldehydeLevel_value = caps_helper_formaldehydeMeasurement.attr_formaldehydeLevel.min;
caps_data->formaldehydeLevel_unit = (char *)caps_helper_formaldehydeMeasurement.attr_formaldehydeLevel.units[CAPS_HELPER_FORMALDEHYDE_MEASUREMENT_UNIT_PPM];

if (ctx) {
caps_data->handle = st_cap_handle_init(ctx, component, caps_helper_formaldehydeMeasurement.id, caps_formaldehydeMeasurement_init_cb, caps_data);
}
if (!caps_data->handle) {
printf("fail to init formaldehydeMeasurement handle\n");
}

return caps_data;
}
42 changes: 23 additions & 19 deletions apps/esp8266/st_air_monitor/main/smart_air_monitor.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,11 +164,6 @@ int get_alarm_state(void)
return alarm_state;
}

void cap_alarm_init_cb(struct caps_alarm_data *caps_data)
{
caps_data->set_alarm_value(caps_data, caps_helper_alarm.attr_alarm.values[CAPS_HELPER_ALARM_VALUE_OFF]);
}

void cap_airQualitySensor_init_cb(struct caps_airQualitySensor_data *caps_data)
{
caps_data->set_airQuality_value(caps_data, get_air_quality());
Expand Down Expand Up @@ -266,13 +261,21 @@ static void app_task(void *arg)
update_air_monitor_info();
update_alarm_state();

send_air_monitor_capabilities();
send_air_monitor_info();
}

vTaskDelay(10 / portTICK_PERIOD_MS);
}
}

static void device_init(void)
{
int alarm_init_state = CAPS_HELPER_ALARM_VALUE_OFF;
cap_alarm_data->set_alarm_value(cap_alarm_data, caps_helper_alarm.attr_alarm.values[alarm_init_state]);

change_alarm_state(alarm_init_state);
}

void app_main(void)
{
/**
Expand Down Expand Up @@ -311,29 +314,30 @@ void app_main(void)
iot_err = st_conn_set_noti_cb(ctx, iot_noti_cb, NULL);
if (iot_err)
printf("fail to set notification callback function\n");
} else {
printf("fail to create the iot_context\n");
}

// 2. create a handle to process capability
// implement init_callback function
cap_alarm_data = caps_alarm_initialize(ctx, "main", cap_alarm_init_cb, NULL);
cap_airQualitySensor_data = caps_airQualitySensor_initialize(ctx, "main", cap_airQualitySensor_init_cb, NULL);
cap_carbonDioxideMeasurement_data = caps_carbonDioxideMeasurement_initialize(ctx, "main", cap_carbonDioxideMeasurement_init_cb, NULL);
cap_carbonMonoxideDetector_data = caps_carbonMonoxideDetector_initialize(ctx, "main", cap_carbonMonoxideDetector_init_cb, NULL);
cap_formaldehydeMeasurement_data = caps_formaldehydeMeasurement_initialize(ctx, "main", cap_formaldehydeMeasurement_init_cb, NULL);
cap_alarm_data = caps_alarm_initialize(ctx, "main", NULL, NULL);
cap_airQualitySensor_data = caps_airQualitySensor_initialize(ctx, "main", cap_airQualitySensor_init_cb, NULL);
cap_carbonDioxideMeasurement_data = caps_carbonDioxideMeasurement_initialize(ctx, "main", cap_carbonDioxideMeasurement_init_cb, NULL);
cap_carbonMonoxideDetector_data = caps_carbonMonoxideDetector_initialize(ctx, "main", cap_carbonMonoxideDetector_init_cb, NULL);
cap_formaldehydeMeasurement_data = caps_formaldehydeMeasurement_initialize(ctx, "main", cap_formaldehydeMeasurement_init_cb, NULL);

// 3. register a callback function to process capability command when it comes from the SmartThings Server
// implement callback function
cap_alarm_data->cmd_both_usr_cb = cap_alarm_cmd_cb;
cap_alarm_data->cmd_off_usr_cb = cap_alarm_cmd_cb;
cap_alarm_data->cmd_siren_usr_cb = cap_alarm_cmd_cb;
cap_alarm_data->cmd_strobe_usr_cb = cap_alarm_cmd_cb;
cap_alarm_data->cmd_both_usr_cb = cap_alarm_cmd_cb;
cap_alarm_data->cmd_off_usr_cb = cap_alarm_cmd_cb;
cap_alarm_data->cmd_siren_usr_cb = cap_alarm_cmd_cb;
cap_alarm_data->cmd_strobe_usr_cb = cap_alarm_cmd_cb;

} else {
printf("fail to create the iot_context\n");
}
device_init();

// 4. needed when it is necessary to keep monitoring the device status
xTaskCreate(app_task, "app_task", 2048, NULL, 10, NULL);

// 5. process on-boarding procedure. There is nothing more to do on the app side than call the API.
st_conn_start(ctx, (st_status_cb)&iot_status_cb, IOT_STATUS_ALL, NULL, NULL);

}
Loading

0 comments on commit afda642

Please sign in to comment.