sse_uint32 sse_hextou32(sse_char *s) { return hex_to_uint(s, sse_strlen(s)); }
static void FILEContentInfo_OnCompleteCallback(MoatValue *in_err_code, MoatValue *in_err_msg, const sse_char *in_uid, const sse_char *in_key, const sse_char *operation, sse_pointer in_user_data) { TFILEContentInfo *self = (TFILEContentInfo*)in_user_data; sse_char *job_service_id = NULL; MoatObject *collection = NULL; sse_int err; sse_char *str; sse_uint len; sse_bool success; sse_int request_id; ASSERT(self); ASSERT(in_err_code); ASSERT(in_err_msg); job_service_id = moat_create_notification_id_with_moat(self->fMoat, (sse_char*)operation, "1.0.0"); ASSERT(job_service_id); LOG_DEBUG("URI=[%s]", job_service_id); collection = moat_object_new(); ASSERT(collection); err = moat_value_get_string(in_err_code, &str, &len); ASSERT(err == SSE_E_OK); if ((sse_strlen(FILE_ERROR_OK) == len) && (sse_strncmp(FILE_ERROR_OK, str, len) == 0)) { success = sse_true; } else { success = sse_false; } err = moat_object_add_boolean_value(collection, "success", success, sse_true); ASSERT(err == SSE_E_OK); err = moat_object_add_value(collection, "message", in_err_msg, sse_true, sse_true); ASSERT(err == SSE_E_OK); err = moat_object_add_value(collection, "code", in_err_code, sse_true, sse_true); ASSERT(err == SSE_E_OK); if (in_uid) { err = moat_object_add_string_value(collection, "uid", (sse_char*)in_uid, 0, sse_true, sse_true); ASSERT(err == SSE_E_OK); } /* Send a notification. */ request_id = moat_send_notification(self->fMoat, job_service_id, (sse_char*)in_key, FILE_MODELNAME_FILERESULT, collection, NULL, //FIXME NULL); //FIXME if (request_id < 0) { LOG_ERROR("moat_send_notification() ... failed with [%s].", request_id); } LOG_INFO("moat_send_notification(job_service_id=[%s], key=[%s]) ... in progress.", job_service_id, in_key); MOAT_OBJECT_DUMP_INFO(TAG, collection); moat_object_free(collection); sse_free(job_service_id); return; }
sse_int TDEVINFOCollector_GetHardwareSim(TDEVINFOCollector* self, DEVINFOCollector_OnGetCallback in_callback, sse_pointer in_user_data) { sse_int err; MoatObject *object = NULL; MoatValue *value = NULL; FILE *fd; sse_char buff[128]; sse_char *iccid = NULL; sse_char *imsi = NULL; sse_char *msisdn = NULL; sse_int i; ASSERT(self); self->fOnGetCallback = in_callback; self->fUserData = in_user_data; self->fStatus = DEVINFO_COLLECTOR_STATUS_COLLECTING; /* Get SIM Info */ fd = fopen("/tmp/.flags/.sim_exist", "r"); if (fd == NULL) { LOG_INFO("No SIM info."); if (self->fOnGetCallback) { self->fOnGetCallback(NULL, self->fUserData, SSE_E_NOENT); } self->fStatus = DEVINFO_COLLECTOR_STATUS_COMPLETED; return SSE_E_OK; } while (fgets(buff, sizeof(buff), fd) != NULL) { LOG_DEBUG("SIM: %s", buff); if ((imsi == NULL) && (sse_strlen(buff) > 15)) { for (i = 0; i < 15; i++) { if (!isdigit(buff[i])) { break; } } imsi = sse_strndup(buff, 15); ASSERT(imsi); LOG_INFO("IMSI=%[%s].", imsi); } else if ((iccid == NULL) && (sse_strlen(buff) > 6) && (sse_strncmp(buff, "+CCID:", 6) == 0)) { iccid = sse_strndup(buff + 7, 19); ASSERT(iccid); LOG_INFO("ICCID=[%s].", iccid); } else if ((msisdn == NULL) && (sse_strlen(buff) > 6) && (sse_strncmp(buff, "+CNUM:", 6) == 0)) { msisdn = sse_strndup(buff + 11, 11); ASSERT(msisdn); LOG_INFO("MSISDN=[%s].", msisdn); } } fclose(fd); /* Create MoatObject */ object = moat_object_new(); ASSERT(object); if (iccid) { err = moat_object_add_string_value(object, DEVINFO_KEY_SIM_ICCID, iccid, sse_strlen(iccid), sse_true, sse_false); if (err != SSE_E_OK) { LOG_ERROR("moat_object_set_string_value() ... failed with [%s].", sse_get_error_string(err)); if(self->fOnGetCallback) { self->fOnGetCallback(NULL, self->fUserData, err); } goto error_exit; } } if (imsi) { err = moat_object_add_string_value(object, DEVINFO_KEY_SIM_IMSI, imsi, sse_strlen(imsi), sse_true, sse_false); if (err != SSE_E_OK) { LOG_ERROR("moat_object_set_string_value() ... failed with [%s].", sse_get_error_string(err)); if(self->fOnGetCallback) { self->fOnGetCallback(NULL, self->fUserData, err); } goto error_exit; } } if (msisdn) { err = moat_object_add_string_value(object, DEVINFO_KEY_SIM_MSISDN, msisdn, sse_strlen(msisdn), sse_true, sse_false); if (err != SSE_E_OK) { LOG_ERROR("moat_object_set_string_value() ... failed with [%s].", sse_get_error_string(err)); if(self->fOnGetCallback) { self->fOnGetCallback(NULL, self->fUserData, err); } goto error_exit; } } /* Call callback */ if(self->fOnGetCallback) { value = moat_value_new_object(object, sse_true); ASSERT(value); self->fOnGetCallback(value, self->fUserData, err); moat_value_free(value); } /* Cleanup */ moat_object_free(object); if (imsi) sse_free(imsi); if (iccid) sse_free(iccid); if (msisdn) sse_free(msisdn); self->fStatus = DEVINFO_COLLECTOR_STATUS_COMPLETED; return SSE_E_OK; /* Abnormal end */ error_exit: self->fStatus = DEVINFO_COLLECTOR_STATUS_ABEND; if (object) moat_object_free(object); if (imsi) sse_free(imsi); if (iccid) sse_free(iccid); if (msisdn) sse_free(msisdn); return err; }