update qcloud sdk
1. iot-hub sdk update to 3.2.0 2. iot-explorer update to 3.1.1
This commit is contained in:
@@ -60,7 +60,7 @@ char *json_get_next_object(int type, char *str, char **key, int *key_len,
|
||||
char JsonMark[JSTYPEMAX][2] = { { '\"', '\"' }, { '{', '}' }, { '[', ']' }, { '0', ' ' } };
|
||||
int iMarkDepth = 0, iValueType = JSNONE, iNameLen = 0, iValueLen = 0;
|
||||
char *p_cName = 0, *p_cValue = 0, *p_cPos = str;
|
||||
char lastchr = ' ';
|
||||
char lastchr = ' ';
|
||||
|
||||
if (type == JSOBJECT) {
|
||||
/* Get Key */
|
||||
@@ -81,7 +81,7 @@ char *json_get_next_object(int type, char *str, char **key, int *key_len,
|
||||
while (p_cPos && *p_cPos) {
|
||||
if (*p_cPos == '"') {
|
||||
iValueType = JSSTRING;
|
||||
lastchr = *p_cPos;
|
||||
lastchr = *p_cPos;
|
||||
p_cValue = ++p_cPos;
|
||||
break;
|
||||
} else if (*p_cPos == '{') {
|
||||
@@ -99,12 +99,12 @@ char *json_get_next_object(int type, char *str, char **key, int *key_len,
|
||||
} else if (*p_cPos == 't' || *p_cPos == 'T' || *p_cPos == 'f' || *p_cPos == 'F') {
|
||||
iValueType = JSBOOLEAN;
|
||||
p_cValue = p_cPos;
|
||||
break;
|
||||
}else if (*p_cPos == 'n' || *p_cPos == 'N') {
|
||||
break;
|
||||
} else if (*p_cPos == 'n' || *p_cPos == 'N') {
|
||||
iValueType = JSNULL;
|
||||
p_cValue = p_cPos;
|
||||
break;
|
||||
}
|
||||
}
|
||||
p_cPos++;
|
||||
}
|
||||
while (p_cPos && *p_cPos && iValueType > JSNONE) {
|
||||
@@ -125,40 +125,38 @@ char *json_get_next_object(int type, char *str, char **key, int *key_len,
|
||||
break;
|
||||
}
|
||||
} else if (iValueType == JSNULL) { //support null/NULL
|
||||
int nlen = strlen(p_cValue);
|
||||
|
||||
if ((*p_cValue == 'n' || *p_cValue == 'N') && nlen >= 4
|
||||
int nlen = strlen(p_cValue);
|
||||
|
||||
if ((*p_cValue == 'n' || *p_cValue == 'N') && nlen >= 4
|
||||
&& (!strncmp(p_cValue, "null", 4)
|
||||
|| !strncmp(p_cValue, "NULL", 4))) {
|
||||
iValueLen = 4;
|
||||
p_cPos = p_cValue + iValueLen;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (iValueType == JSNUMBER) {
|
||||
}
|
||||
} else if (iValueType == JSNUMBER) {
|
||||
//if (*p_cPos < '0' || *p_cPos > '9') {
|
||||
if ((*p_cPos < '0' || *p_cPos > '9')&&(*p_cPos != '.')) { //support float
|
||||
if ((*p_cPos < '0' || *p_cPos > '9') && (*p_cPos != '.')) { //support float
|
||||
iValueLen = p_cPos - p_cValue;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (*p_cPos == JsonMark[iValueType][1]) {
|
||||
} else if (*p_cPos == JsonMark[iValueType][1]) {
|
||||
if (iMarkDepth == 0) {
|
||||
iValueLen = p_cPos - p_cValue + (iValueType == JSSTRING ? 0 : 1);
|
||||
p_cPos++;
|
||||
if((iValueType == JSSTRING) && (lastchr == '\\')){
|
||||
lastchr = *p_cPos;
|
||||
continue;
|
||||
}else{
|
||||
break;
|
||||
}
|
||||
iValueLen = p_cPos - p_cValue + (iValueType == JSSTRING ? 0 : 1);
|
||||
p_cPos++;
|
||||
if ((iValueType == JSSTRING) && (lastchr == '\\')) {
|
||||
lastchr = *p_cPos;
|
||||
continue;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
iMarkDepth--;
|
||||
}
|
||||
} else if (*p_cPos == JsonMark[iValueType][0]) {
|
||||
iMarkDepth++;
|
||||
}
|
||||
lastchr = *p_cPos;
|
||||
lastchr = *p_cPos;
|
||||
p_cPos++;
|
||||
}
|
||||
|
||||
@@ -233,7 +231,7 @@ int json_get_value_by_name_cb(char *p_cName, int iNameLen, char *p_cValue, int i
|
||||
#endif
|
||||
|
||||
if ((iNameLen == p_stNameValue->nLen) && !strncmp(p_cName, p_stNameValue->pN, p_stNameValue->nLen)) {
|
||||
|
||||
|
||||
p_stNameValue->pV = p_cValue;
|
||||
p_stNameValue->vLen = iValueLen;
|
||||
p_stNameValue->vType = iValueType;
|
||||
@@ -256,9 +254,9 @@ char *json_get_value_by_name(char *p_cJsonStr, int iStrLen, char *p_cName, int *
|
||||
}
|
||||
if (p_iValueType) {
|
||||
*p_iValueType = stNV.vType;
|
||||
if(JSNULL == stNV.vType){
|
||||
stNV.pV = NULL;
|
||||
}
|
||||
if (JSNULL == stNV.vType) {
|
||||
stNV.pV = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
return stNV.pV;
|
||||
|
@@ -91,9 +91,6 @@ list_head_t *LITE_json_keys_of(char *src, char *prefix)
|
||||
json_key_t *entry = NULL;
|
||||
|
||||
entry = HAL_Malloc(sizeof(json_key_t));
|
||||
if (NULL == entry) {
|
||||
return NULL;
|
||||
}
|
||||
memset(entry, 0, sizeof(json_key_t));
|
||||
entry->key = LITE_format_string("%s%.*s", prefix, klen, key);
|
||||
list_add_tail(&entry->list, &keylist);
|
||||
@@ -112,9 +109,6 @@ list_head_t *LITE_json_keys_of(char *src, char *prefix)
|
||||
json_key_t *entry = NULL;
|
||||
|
||||
entry = HAL_Malloc(sizeof(json_key_t));
|
||||
if (NULL == entry) {
|
||||
return NULL;
|
||||
}
|
||||
memset(entry, 0, sizeof(json_key_t));
|
||||
list_add_tail(&entry->list, &keylist);
|
||||
|
||||
@@ -138,88 +132,94 @@ void LITE_json_keys_release(list_head_t *keylist)
|
||||
}
|
||||
|
||||
|
||||
static void _strip_transfer(char *src)
|
||||
static void _strip_transfer(char *src)
|
||||
{
|
||||
char *end = src + strlen(src)+ 1;
|
||||
|
||||
while(*src != '\0')
|
||||
{
|
||||
if(*src == '\\')
|
||||
{
|
||||
memmove(src, src+1, end - src);
|
||||
end--;
|
||||
}
|
||||
src++;
|
||||
}
|
||||
}
|
||||
char *end = src + strlen(src) + 1;
|
||||
|
||||
while (*src != '\0') {
|
||||
if (*src == '\\') {
|
||||
memmove(src, src + 1, end - src);
|
||||
end--;
|
||||
}
|
||||
src++;
|
||||
}
|
||||
}
|
||||
|
||||
char * LITE_json_string_value_strip_transfer(char *key, char *src)
|
||||
{
|
||||
char * str = LITE_json_value_of(key, src);
|
||||
char * str = LITE_json_value_of(key, src);
|
||||
|
||||
if(NULL != str){
|
||||
_strip_transfer(str);
|
||||
}
|
||||
return str;
|
||||
if (NULL != str) {
|
||||
_strip_transfer(str);
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int LITE_get_int32(int32_t *value, char *src) {
|
||||
return (sscanf(src, "%" SCNi32, value) == 1) ? QCLOUD_RET_SUCCESS : QCLOUD_ERR_FAILURE;
|
||||
int LITE_get_int32(int32_t *value, char *src)
|
||||
{
|
||||
return (sscanf(src, "%" SCNi32, value) == 1) ? QCLOUD_RET_SUCCESS : QCLOUD_ERR_FAILURE;
|
||||
}
|
||||
|
||||
int LITE_get_int16(int16_t *value, char *src) {
|
||||
return (sscanf(src, "%" SCNi16, value) == 1) ? QCLOUD_RET_SUCCESS : QCLOUD_ERR_FAILURE;
|
||||
int LITE_get_int16(int16_t *value, char *src)
|
||||
{
|
||||
return (sscanf(src, "%" SCNi16, value) == 1) ? QCLOUD_RET_SUCCESS : QCLOUD_ERR_FAILURE;
|
||||
}
|
||||
|
||||
int LITE_get_int8(int8_t *value, char *src) {
|
||||
return (sscanf(src, "%" SCNi8, value) == 1) ? QCLOUD_RET_SUCCESS : QCLOUD_ERR_FAILURE;
|
||||
int LITE_get_int8(int8_t *value, char *src)
|
||||
{
|
||||
return (sscanf(src, "%" SCNi8, value) == 1) ? QCLOUD_RET_SUCCESS : QCLOUD_ERR_FAILURE;
|
||||
}
|
||||
|
||||
int LITE_get_uint32(uint32_t *value, char *src) {
|
||||
return (sscanf(src, "%" SCNu32, value) == 1) ? QCLOUD_RET_SUCCESS : QCLOUD_ERR_FAILURE;
|
||||
int LITE_get_uint32(uint32_t *value, char *src)
|
||||
{
|
||||
return (sscanf(src, "%" SCNu32, value) == 1) ? QCLOUD_RET_SUCCESS : QCLOUD_ERR_FAILURE;
|
||||
}
|
||||
|
||||
int LITE_get_uint16(uint16_t *value, char *src) {
|
||||
return (sscanf(src, "%" SCNu16, value) == 1) ? QCLOUD_RET_SUCCESS : QCLOUD_ERR_FAILURE;
|
||||
int LITE_get_uint16(uint16_t *value, char *src)
|
||||
{
|
||||
return (sscanf(src, "%" SCNu16, value) == 1) ? QCLOUD_RET_SUCCESS : QCLOUD_ERR_FAILURE;
|
||||
}
|
||||
|
||||
int LITE_get_uint8(uint8_t *value, char *src) {
|
||||
return (sscanf(src, "%" SCNu8, value) == 1) ? QCLOUD_RET_SUCCESS : QCLOUD_ERR_FAILURE;
|
||||
int LITE_get_uint8(uint8_t *value, char *src)
|
||||
{
|
||||
return (sscanf(src, "%" SCNu8, value) == 1) ? QCLOUD_RET_SUCCESS : QCLOUD_ERR_FAILURE;
|
||||
}
|
||||
|
||||
int LITE_get_float(float *value, char *src) {
|
||||
return (sscanf(src, "%f", value) == 1) ? QCLOUD_RET_SUCCESS : QCLOUD_ERR_FAILURE;
|
||||
int LITE_get_float(float *value, char *src)
|
||||
{
|
||||
return (sscanf(src, "%f", value) == 1) ? QCLOUD_RET_SUCCESS : QCLOUD_ERR_FAILURE;
|
||||
}
|
||||
|
||||
int LITE_get_double(double *value, char *src) {
|
||||
return (sscanf(src, "%lf", value) == 1) ? QCLOUD_RET_SUCCESS : QCLOUD_ERR_FAILURE;
|
||||
int LITE_get_double(double *value, char *src)
|
||||
{
|
||||
return (sscanf(src, "%lf", value) == 1) ? QCLOUD_RET_SUCCESS : QCLOUD_ERR_FAILURE;
|
||||
}
|
||||
|
||||
int LITE_get_boolean(bool *value, char *src) {
|
||||
if (!strcmp(src, "false")) {
|
||||
*value = false;
|
||||
}
|
||||
else {
|
||||
*value = true;
|
||||
}
|
||||
int LITE_get_boolean(bool *value, char *src)
|
||||
{
|
||||
if (!strcmp(src, "false")) {
|
||||
*value = false;
|
||||
} else {
|
||||
*value = true;
|
||||
}
|
||||
|
||||
return QCLOUD_RET_SUCCESS;
|
||||
return QCLOUD_RET_SUCCESS;
|
||||
}
|
||||
|
||||
int LITE_get_string(int8_t *value, char *src, uint16_t max_len) {
|
||||
int rc;
|
||||
|
||||
if(NULL != strncpy((char *)value, src, max_len)){
|
||||
value[Min(strlen(src), max_len)] = '\0';
|
||||
rc = QCLOUD_RET_SUCCESS;
|
||||
}else{
|
||||
rc = QCLOUD_ERR_FAILURE;
|
||||
}
|
||||
|
||||
return rc;
|
||||
int LITE_get_string(int8_t *value, char *src, uint16_t max_len)
|
||||
{
|
||||
int rc;
|
||||
|
||||
if (NULL != strncpy((char *)value, src, max_len)) {
|
||||
value[Min(strlen(src), max_len)] = '\0';
|
||||
rc = QCLOUD_RET_SUCCESS;
|
||||
} else {
|
||||
rc = QCLOUD_ERR_FAILURE;
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
|
@@ -18,6 +18,8 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#include "qcloud_iot_ca.h"
|
||||
#include "qcloud_iot_import.h"
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
@@ -49,6 +51,8 @@ static const char *iot_ca_crt = \
|
||||
"-----END CERTIFICATE-----"
|
||||
};
|
||||
|
||||
#ifdef OTA_USE_HTTPS
|
||||
|
||||
static const char *iot_https_ca_crt = \
|
||||
{
|
||||
"-----BEGIN CERTIFICATE-----\r\n"
|
||||
@@ -101,17 +105,21 @@ static const char *iot_https_ca_crt = \
|
||||
};
|
||||
#endif
|
||||
|
||||
const char *iot_ca_get() {
|
||||
#endif
|
||||
|
||||
const char *iot_ca_get()
|
||||
{
|
||||
#ifndef AUTH_WITH_NOTLS
|
||||
return iot_ca_crt;
|
||||
return iot_ca_crt;
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
const char *iot_https_ca_get() {
|
||||
#ifndef AUTH_WITH_NOTLS
|
||||
return iot_https_ca_crt;
|
||||
const char *iot_https_ca_get()
|
||||
{
|
||||
#if ((!defined(AUTH_WITH_NOTLS)) && (defined OTA_USE_HTTPS))
|
||||
return iot_https_ca_crt;
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
|
@@ -25,39 +25,37 @@ extern "C" {
|
||||
static DeviceInfo sg_device_info;
|
||||
static bool sg_devinfo_initialized;
|
||||
|
||||
int iot_device_info_init()
|
||||
int iot_device_info_init()
|
||||
{
|
||||
if (sg_devinfo_initialized) {
|
||||
Log_e("device info has been initialized.");
|
||||
return 0;
|
||||
}
|
||||
if (sg_devinfo_initialized) {
|
||||
Log_e("device info has been initialized.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
memset(&sg_device_info, 0x0, sizeof(DeviceInfo));
|
||||
sg_devinfo_initialized = true;
|
||||
|
||||
return QCLOUD_RET_SUCCESS;
|
||||
memset(&sg_device_info, 0x0, sizeof(DeviceInfo));
|
||||
sg_devinfo_initialized = true;
|
||||
|
||||
return QCLOUD_RET_SUCCESS;
|
||||
}
|
||||
|
||||
int iot_device_info_set(const char *product_id, const char *device_name)
|
||||
{
|
||||
int iot_device_info_set(const char *product_id, const char *device_name)
|
||||
{
|
||||
|
||||
memset(&sg_device_info, 0x0, sizeof(DeviceInfo));
|
||||
if ((MAX_SIZE_OF_PRODUCT_ID) < strlen(product_id))
|
||||
{
|
||||
Log_e("product name(%s) length:(%lu) exceeding limitation", product_id, strlen(product_id));
|
||||
return QCLOUD_ERR_FAILURE;
|
||||
}
|
||||
if ((MAX_SIZE_OF_DEVICE_NAME) < strlen(device_name))
|
||||
{
|
||||
Log_e("device name(%s) length:(%lu) exceeding limitation", device_name, strlen(device_name));
|
||||
return QCLOUD_ERR_FAILURE;
|
||||
}
|
||||
memset(&sg_device_info, 0x0, sizeof(DeviceInfo));
|
||||
if ((MAX_SIZE_OF_PRODUCT_ID) < strlen(product_id)) {
|
||||
Log_e("product name(%s) length:(%lu) exceeding limitation", product_id, strlen(product_id));
|
||||
return QCLOUD_ERR_FAILURE;
|
||||
}
|
||||
if ((MAX_SIZE_OF_DEVICE_NAME) < strlen(device_name)) {
|
||||
Log_e("device name(%s) length:(%lu) exceeding limitation", device_name, strlen(device_name));
|
||||
return QCLOUD_ERR_FAILURE;
|
||||
}
|
||||
|
||||
strncpy(sg_device_info.product_id, product_id, MAX_SIZE_OF_PRODUCT_ID);
|
||||
strncpy(sg_device_info.device_name, device_name, MAX_SIZE_OF_DEVICE_NAME);
|
||||
strncpy(sg_device_info.product_id, product_id, MAX_SIZE_OF_PRODUCT_ID);
|
||||
strncpy(sg_device_info.device_name, device_name, MAX_SIZE_OF_DEVICE_NAME);
|
||||
|
||||
/* construct device-id(@product_id+@device_name) */
|
||||
memset(sg_device_info.client_id, 0x0, MAX_SIZE_OF_CLIENT_ID);
|
||||
/* construct device-id(@product_id+@device_name) */
|
||||
memset(sg_device_info.client_id, 0x0, MAX_SIZE_OF_CLIENT_ID);
|
||||
int ret = HAL_Snprintf(sg_device_info.client_id, MAX_SIZE_OF_CLIENT_ID, "%s%s", product_id, device_name);
|
||||
if ((ret < 0) || (ret >= MAX_SIZE_OF_CLIENT_ID)) {
|
||||
Log_e("set device info failed");
|
||||
@@ -65,7 +63,7 @@ int iot_device_info_set(const char *product_id, const char *device_name)
|
||||
}
|
||||
|
||||
Log_i("SDK_Ver: %s, Product_ID: %s, Device_Name: %s", QCLOUD_IOT_DEVICE_SDK_VERSION, product_id, device_name);
|
||||
return QCLOUD_RET_SUCCESS;
|
||||
return QCLOUD_RET_SUCCESS;
|
||||
}
|
||||
|
||||
DeviceInfo* iot_device_info_get(void)
|
||||
|
@@ -29,7 +29,7 @@ static char *level_str[] = {
|
||||
"DIS", "ERR", "WRN", "INF", "DBG"
|
||||
};
|
||||
|
||||
static LogMessageHandler sg_log_message_handler= NULL;
|
||||
static LogMessageHandler sg_log_message_handler = NULL;
|
||||
|
||||
LOG_LEVEL g_log_print_level = eLOG_INFO;
|
||||
|
||||
@@ -46,35 +46,37 @@ static const char *_get_filename(const char *p)
|
||||
#else
|
||||
char ch = '/';
|
||||
#endif
|
||||
const char *q = strrchr(p,ch);
|
||||
if(q == NULL)
|
||||
{
|
||||
const char *q = strrchr(p, ch);
|
||||
if (q == NULL) {
|
||||
q = p;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
q++;
|
||||
}
|
||||
return q;
|
||||
}
|
||||
|
||||
void IOT_Log_Set_Level(LOG_LEVEL logLevel) {
|
||||
void IOT_Log_Set_Level(LOG_LEVEL logLevel)
|
||||
{
|
||||
g_log_print_level = logLevel;
|
||||
}
|
||||
|
||||
LOG_LEVEL IOT_Log_Get_Level() {
|
||||
LOG_LEVEL IOT_Log_Get_Level()
|
||||
{
|
||||
return g_log_print_level;
|
||||
}
|
||||
|
||||
void IOT_Log_Set_MessageHandler(LogMessageHandler handler) {
|
||||
sg_log_message_handler = handler;
|
||||
void IOT_Log_Set_MessageHandler(LogMessageHandler handler)
|
||||
{
|
||||
sg_log_message_handler = handler;
|
||||
}
|
||||
|
||||
void IOT_Log_Set_Upload_Level(LOG_LEVEL logLevel) {
|
||||
void IOT_Log_Set_Upload_Level(LOG_LEVEL logLevel)
|
||||
{
|
||||
g_log_upload_level = logLevel;
|
||||
}
|
||||
|
||||
LOG_LEVEL IOT_Log_Get_Upload_Level() {
|
||||
LOG_LEVEL IOT_Log_Get_Upload_Level()
|
||||
{
|
||||
return g_log_upload_level;
|
||||
}
|
||||
|
||||
@@ -91,7 +93,7 @@ void IOT_Log_Fini_Uploader(void)
|
||||
{
|
||||
#ifdef LOG_UPLOAD
|
||||
fini_log_uploader();
|
||||
return;
|
||||
return;
|
||||
#else
|
||||
return ;
|
||||
#endif
|
||||
@@ -108,16 +110,16 @@ int IOT_Log_Upload(bool force_upload)
|
||||
|
||||
void IOT_Log_Gen(const char *file, const char *func, const int line, const int level, const char *fmt, ...)
|
||||
{
|
||||
if (level > g_log_print_level && level > g_log_upload_level) {
|
||||
return;
|
||||
}
|
||||
if (level > g_log_print_level && level > g_log_upload_level) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* format log content */
|
||||
const char *file_name = _get_filename(file);
|
||||
const char *file_name = _get_filename(file);
|
||||
|
||||
char sg_text_buf[MAX_LOG_MSG_LEN + 1];
|
||||
char *tmp_buf = sg_text_buf;
|
||||
char *o = tmp_buf;
|
||||
char sg_text_buf[MAX_LOG_MSG_LEN + 1];
|
||||
char *tmp_buf = sg_text_buf;
|
||||
char *o = tmp_buf;
|
||||
memset(tmp_buf, 0, sizeof(sg_text_buf));
|
||||
|
||||
o += HAL_Snprintf(o, sizeof(sg_text_buf), "%s|%s|%s|%s(%d): ", level_str[level], HAL_Timer_current(), file_name, func, line);
|
||||
@@ -138,9 +140,9 @@ void IOT_Log_Gen(const char *file, const char *func, const int line, const int l
|
||||
|
||||
if (level <= g_log_print_level) {
|
||||
/* customer defined log print handler */
|
||||
if (sg_log_message_handler != NULL && sg_log_message_handler(tmp_buf)) {
|
||||
return;
|
||||
}
|
||||
if (sg_log_message_handler != NULL && sg_log_message_handler(tmp_buf)) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* default log handler: print to console */
|
||||
HAL_Printf("%s", tmp_buf);
|
||||
|
@@ -35,9 +35,6 @@ char *LITE_format_string(const char *fmt, ...)
|
||||
|
||||
va_start(ap, fmt);
|
||||
tmp = HAL_Malloc(TEMP_STRING_MAXLEN);
|
||||
if (NULL == tmp) {
|
||||
return NULL;
|
||||
}
|
||||
memset(tmp, 0, TEMP_STRING_MAXLEN);
|
||||
rc = HAL_Vsnprintf(tmp, TEMP_STRING_MAXLEN, fmt, ap);
|
||||
va_end(ap);
|
||||
@@ -60,12 +57,9 @@ char *LITE_format_nstring(const int len, const char *fmt, ...)
|
||||
int rc = -1;
|
||||
|
||||
va_start(ap, fmt);
|
||||
tmp = HAL_Malloc(len+2);
|
||||
if (NULL == tmp) {
|
||||
return NULL;
|
||||
}
|
||||
memset(tmp, 0, len+2);
|
||||
rc = HAL_Vsnprintf(tmp, len+1, fmt, ap);
|
||||
tmp = HAL_Malloc(len + 2);
|
||||
memset(tmp, 0, len + 2);
|
||||
rc = HAL_Vsnprintf(tmp, len + 1, fmt, ap);
|
||||
va_end(ap);
|
||||
LITE_ASSERT(tmp);
|
||||
LITE_ASSERT(rc < 1024);
|
||||
@@ -176,3 +170,17 @@ void LITE_replace_substr(char originalString[], char key[], char swap[])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LITE_str_strip_char(char *src, char destCh)
|
||||
{
|
||||
char *end = src + strlen(src) + 1;
|
||||
|
||||
while (*src != '\0') {
|
||||
if (*src == destCh) {
|
||||
memmove(src, src + 1, end - src);
|
||||
end--;
|
||||
}
|
||||
src++;
|
||||
}
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -16,14 +16,13 @@
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "utils_base64.h"
|
||||
|
||||
static const unsigned char base64_enc_map[64] =
|
||||
{
|
||||
static const unsigned char base64_enc_map[64] = {
|
||||
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
|
||||
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
|
||||
'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
|
||||
@@ -33,8 +32,7 @@ static const unsigned char base64_enc_map[64] =
|
||||
'8', '9', '+', '/'
|
||||
};
|
||||
|
||||
static const unsigned char base64_dec_map[128] =
|
||||
{
|
||||
static const unsigned char base64_dec_map[128] = {
|
||||
127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
|
||||
127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
|
||||
127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
|
||||
@@ -49,155 +47,144 @@ static const unsigned char base64_dec_map[128] =
|
||||
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
|
||||
49, 50, 51, 127, 127, 127, 127, 127
|
||||
};
|
||||
|
||||
|
||||
#define BASE64_SIZE_T_MAX ( (size_t) -1 ) /* SIZE_T_MAX is not standard */
|
||||
|
||||
|
||||
int qcloud_iot_utils_base64encode( unsigned char *dst, size_t dlen, size_t *olen,
|
||||
const unsigned char *src, size_t slen )
|
||||
const unsigned char *src, size_t slen )
|
||||
{
|
||||
size_t i, n;
|
||||
unsigned char *p;
|
||||
|
||||
if( slen == 0 )
|
||||
{
|
||||
|
||||
if ( slen == 0 ) {
|
||||
*olen = 0;
|
||||
return( 0 );
|
||||
return ( 0 );
|
||||
}
|
||||
|
||||
|
||||
n = slen / 3 + ( slen % 3 != 0 );
|
||||
|
||||
if( n > ( BASE64_SIZE_T_MAX - 1 ) / 4 )
|
||||
{
|
||||
|
||||
if ( n > ( BASE64_SIZE_T_MAX - 1 ) / 4 ) {
|
||||
*olen = BASE64_SIZE_T_MAX;
|
||||
return( QCLOUD_ERR_FAILURE );
|
||||
return ( QCLOUD_ERR_FAILURE );
|
||||
}
|
||||
|
||||
|
||||
n *= 4;
|
||||
|
||||
if( ( dlen < n + 1 ) || ( NULL == dst ) )
|
||||
{
|
||||
|
||||
if ( ( dlen < n + 1 ) || ( NULL == dst ) ) {
|
||||
*olen = n + 1;
|
||||
return( QCLOUD_ERR_FAILURE );
|
||||
return ( QCLOUD_ERR_FAILURE );
|
||||
}
|
||||
|
||||
|
||||
n = ( slen / 3 ) * 3;
|
||||
|
||||
|
||||
int C1, C2, C3;
|
||||
for( i = 0, p = dst; i < n; i += 3 )
|
||||
{
|
||||
for ( i = 0, p = dst; i < n; i += 3 ) {
|
||||
C1 = *src++;
|
||||
C2 = *src++;
|
||||
C3 = *src++;
|
||||
|
||||
|
||||
*p++ = base64_enc_map[(C1 >> 2) & 0x3F];
|
||||
*p++ = base64_enc_map[(((C1 & 3) << 4) + (C2 >> 4)) & 0x3F];
|
||||
*p++ = base64_enc_map[(((C2 & 15) << 2) + (C3 >> 6)) & 0x3F];
|
||||
*p++ = base64_enc_map[C3 & 0x3F];
|
||||
}
|
||||
|
||||
if( i < slen )
|
||||
{
|
||||
|
||||
if ( i < slen ) {
|
||||
C1 = *src++;
|
||||
C2 = ( ( i + 1 ) < slen ) ? *src++ : 0;
|
||||
|
||||
|
||||
*p++ = base64_enc_map[(C1 >> 2) & 0x3F];
|
||||
*p++ = base64_enc_map[(((C1 & 3) << 4) + (C2 >> 4)) & 0x3F];
|
||||
|
||||
if( ( i + 1 ) < slen )
|
||||
|
||||
if ( ( i + 1 ) < slen )
|
||||
*p++ = base64_enc_map[((C2 & 15) << 2) & 0x3F];
|
||||
else *p++ = '=';
|
||||
|
||||
|
||||
*p++ = '=';
|
||||
}
|
||||
|
||||
|
||||
*olen = p - dst;
|
||||
*p = 0;
|
||||
|
||||
return( 0 );
|
||||
|
||||
return ( 0 );
|
||||
}
|
||||
|
||||
int qcloud_iot_utils_base64decode( unsigned char *dst, size_t dlen, size_t *olen,
|
||||
const unsigned char *src, size_t slen )
|
||||
const unsigned char *src, size_t slen )
|
||||
{
|
||||
size_t i, n;
|
||||
uint32_t j, x;
|
||||
unsigned char *p;
|
||||
|
||||
|
||||
/* First pass: check for validity and get output length */
|
||||
for( i = n = j = 0; i < slen; i++ )
|
||||
{
|
||||
for ( i = n = j = 0; i < slen; i++ ) {
|
||||
/* Skip spaces before checking for EOL */
|
||||
x = 0;
|
||||
while( i < slen && src[i] == ' ' )
|
||||
{
|
||||
while ( i < slen && src[i] == ' ' ) {
|
||||
++i;
|
||||
++x;
|
||||
}
|
||||
|
||||
|
||||
/* Spaces at end of buffer are OK */
|
||||
if( i == slen )
|
||||
if ( i == slen )
|
||||
break;
|
||||
|
||||
if( ( slen - i ) >= 2 &&
|
||||
src[i] == '\r' && src[i + 1] == '\n' )
|
||||
|
||||
if ( ( slen - i ) >= 2 &&
|
||||
src[i] == '\r' && src[i + 1] == '\n' )
|
||||
continue;
|
||||
|
||||
if( src[i] == '\n' )
|
||||
|
||||
if ( src[i] == '\n' )
|
||||
continue;
|
||||
|
||||
|
||||
/* Space inside a line is an error */
|
||||
if( x != 0 )
|
||||
return( QCLOUD_ERR_FAILURE );
|
||||
|
||||
if( src[i] == '=' && ++j > 2 )
|
||||
return( QCLOUD_ERR_FAILURE );
|
||||
|
||||
if( src[i] > 127 || base64_dec_map[src[i]] == 127 )
|
||||
return( QCLOUD_ERR_FAILURE );
|
||||
|
||||
if( base64_dec_map[src[i]] < 64 && j != 0 )
|
||||
return( QCLOUD_ERR_FAILURE );
|
||||
|
||||
if ( x != 0 )
|
||||
return ( QCLOUD_ERR_FAILURE );
|
||||
|
||||
if ( src[i] == '=' && ++j > 2 )
|
||||
return ( QCLOUD_ERR_FAILURE );
|
||||
|
||||
if ( src[i] > 127 || base64_dec_map[src[i]] == 127 )
|
||||
return ( QCLOUD_ERR_FAILURE );
|
||||
|
||||
if ( base64_dec_map[src[i]] < 64 && j != 0 )
|
||||
return ( QCLOUD_ERR_FAILURE );
|
||||
|
||||
n++;
|
||||
}
|
||||
|
||||
if( n == 0 )
|
||||
{
|
||||
|
||||
if ( n == 0 ) {
|
||||
*olen = 0;
|
||||
return( 0 );
|
||||
return ( 0 );
|
||||
}
|
||||
|
||||
|
||||
n = ( ( n * 6 ) + 7 ) >> 3;
|
||||
n -= j;
|
||||
|
||||
if( dst == NULL || dlen < n )
|
||||
{
|
||||
|
||||
if ( dst == NULL || dlen < n ) {
|
||||
*olen = n;
|
||||
return( QCLOUD_ERR_FAILURE );
|
||||
return ( QCLOUD_ERR_FAILURE );
|
||||
}
|
||||
|
||||
for( j = 3, n = x = 0, p = dst; i > 0; i--, src++ )
|
||||
{
|
||||
if( *src == '\r' || *src == '\n' || *src == ' ' )
|
||||
|
||||
for ( j = 3, n = x = 0, p = dst; i > 0; i--, src++ ) {
|
||||
if ( *src == '\r' || *src == '\n' || *src == ' ' )
|
||||
continue;
|
||||
|
||||
|
||||
j -= ( base64_dec_map[*src] == 64 );
|
||||
x = ( x << 6 ) | ( base64_dec_map[*src] & 0x3F );
|
||||
|
||||
if( ++n == 4 )
|
||||
{
|
||||
|
||||
if ( ++n == 4 ) {
|
||||
n = 0;
|
||||
if( j > 0 ) *p++ = (unsigned char)( x >> 16 );
|
||||
if( j > 1 ) *p++ = (unsigned char)( x >> 8 );
|
||||
if( j > 2 ) *p++ = (unsigned char)( x );
|
||||
if ( j > 0 ) *p++ = (unsigned char)( x >> 16 );
|
||||
if ( j > 1 ) *p++ = (unsigned char)( x >> 8 );
|
||||
if ( j > 2 ) *p++ = (unsigned char)( x );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
*olen = p - dst;
|
||||
|
||||
return( 0 );
|
||||
|
||||
return ( 0 );
|
||||
}
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@@ -22,12 +22,12 @@
|
||||
#include "qcloud_iot_import.h"
|
||||
#include "utils_getopt.h"
|
||||
|
||||
static int utils_opterr = 1; /* if error message should be printed */
|
||||
static int utils_optind = 1; /* index into parent argv vector */
|
||||
static int utils_optopt; /* character checked for validity */
|
||||
static int utils_optreset = 1; /* reset getopt */
|
||||
static int utils_opterr = 1; /* if error message should be printed */
|
||||
static int utils_optind = 1; /* index into parent argv vector */
|
||||
static int utils_optopt; /* character checked for validity */
|
||||
static int utils_optreset = 1; /* reset getopt */
|
||||
|
||||
char* utils_optarg; /* argument associated with option */
|
||||
char* utils_optarg; /* argument associated with option */
|
||||
|
||||
int utils_getopt(int nargc, char* const* nargv, const char* options)
|
||||
{
|
||||
@@ -36,67 +36,63 @@ int utils_getopt(int nargc, char* const* nargv, const char* options)
|
||||
#define BADARG (int)':'
|
||||
#define EMSG ""
|
||||
|
||||
static char* place = EMSG; /* option letter processing */
|
||||
const char* oli; /* option letter list index */
|
||||
static char* place = EMSG; /* option letter processing */
|
||||
const char* oli; /* option letter list index */
|
||||
|
||||
if (utils_optreset || !*place) /* update scanning pointer */
|
||||
{
|
||||
utils_optreset = 0;
|
||||
|
||||
if (utils_optind >= nargc || *(place = nargv[utils_optind]) != '-')
|
||||
{
|
||||
utils_optind = 1;
|
||||
utils_optreset = 1;
|
||||
place = EMSG;
|
||||
return (-1);
|
||||
}
|
||||
if (utils_optreset || !*place) { /* update scanning pointer */
|
||||
utils_optreset = 0;
|
||||
|
||||
place++;
|
||||
}
|
||||
if (utils_optind >= nargc || *(place = nargv[utils_optind]) != '-') {
|
||||
utils_optind = 1;
|
||||
utils_optreset = 1;
|
||||
place = EMSG;
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/* option letter okay? */
|
||||
if ((utils_optopt = (int)*place++) == (int)':' ||
|
||||
!(oli = strchr(options, utils_optopt))) {
|
||||
/*
|
||||
* if the user didn't specify '-' as an option,
|
||||
* assume it means -1.
|
||||
*/
|
||||
if (utils_optopt == (int)'-')
|
||||
return (-1);
|
||||
place++;
|
||||
}
|
||||
|
||||
if (!*place)
|
||||
++utils_optind;
|
||||
/* option letter okay? */
|
||||
if ((utils_optopt = (int) * place++) == (int)':' ||
|
||||
!(oli = strchr(options, utils_optopt))) {
|
||||
/*
|
||||
* if the user didn't specify '-' as an option,
|
||||
* assume it means -1.
|
||||
*/
|
||||
if (utils_optopt == (int)'-')
|
||||
return (-1);
|
||||
|
||||
if (utils_opterr && *options != ':')
|
||||
HAL_Printf("illegal option - %c\n", utils_optopt);
|
||||
if (!*place)
|
||||
++utils_optind;
|
||||
|
||||
return (BADCH);
|
||||
}
|
||||
if (utils_opterr && *options != ':')
|
||||
HAL_Printf("illegal option - %c\n", utils_optopt);
|
||||
|
||||
if (*++oli != ':') { /* don't need argument */
|
||||
utils_optarg = NULL;
|
||||
if (!*place)
|
||||
++utils_optind;
|
||||
}
|
||||
else
|
||||
{ /* need an argument */
|
||||
if (*place) /* no white space */
|
||||
utils_optarg = place;
|
||||
else if (nargc <= ++utils_optind) { /* no arg */
|
||||
place = EMSG;
|
||||
if (*options == ':')
|
||||
return (BADARG);
|
||||
if (utils_opterr)
|
||||
HAL_Printf("option requires an argument - %c\n", utils_optopt);
|
||||
return (BADCH);
|
||||
}
|
||||
else /* white space */
|
||||
utils_optarg = nargv[utils_optind];
|
||||
return (BADCH);
|
||||
}
|
||||
|
||||
place = EMSG;
|
||||
++utils_optind;
|
||||
}
|
||||
if (*++oli != ':') { /* don't need argument */
|
||||
utils_optarg = NULL;
|
||||
if (!*place)
|
||||
++utils_optind;
|
||||
} else {
|
||||
/* need an argument */
|
||||
if (*place) /* no white space */
|
||||
utils_optarg = place;
|
||||
else if (nargc <= ++utils_optind) { /* no arg */
|
||||
place = EMSG;
|
||||
if (*options == ':')
|
||||
return (BADARG);
|
||||
if (utils_opterr)
|
||||
HAL_Printf("option requires an argument - %c\n", utils_optopt);
|
||||
return (BADCH);
|
||||
} else /* white space */
|
||||
utils_optarg = nargv[utils_optind];
|
||||
|
||||
/* dump back option letter */
|
||||
return (utils_optopt);
|
||||
place = EMSG;
|
||||
++utils_optind;
|
||||
}
|
||||
|
||||
/* dump back option letter */
|
||||
return (utils_optopt);
|
||||
}
|
||||
|
@@ -26,13 +26,13 @@
|
||||
|
||||
void utils_hmac_md5(const char *msg, int msg_len, char *digest, const char *key, int key_len)
|
||||
{
|
||||
if((NULL == msg) || (NULL == digest) || (NULL == key)) {
|
||||
if ((NULL == msg) || (NULL == digest) || (NULL == key)) {
|
||||
Log_e("parameter is Null,failed!");
|
||||
return;
|
||||
}
|
||||
|
||||
if(key_len > KEY_IOPAD_SIZE) {
|
||||
Log_e("key_len > size(%d) of array",KEY_IOPAD_SIZE);
|
||||
if (key_len > KEY_IOPAD_SIZE) {
|
||||
Log_e("key_len > size(%d) of array", KEY_IOPAD_SIZE);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -76,13 +76,13 @@ void utils_hmac_md5(const char *msg, int msg_len, char *digest, const char *key,
|
||||
|
||||
void utils_hmac_sha1(const char *msg, int msg_len, char *digest, const char *key, int key_len)
|
||||
{
|
||||
if((NULL == msg) || (NULL == digest) || (NULL == key)) {
|
||||
if ((NULL == msg) || (NULL == digest) || (NULL == key)) {
|
||||
Log_e("parameter is Null,failed!");
|
||||
return;
|
||||
}
|
||||
|
||||
if(key_len > KEY_IOPAD_SIZE) {
|
||||
Log_e("key_len > size(%d) of array",KEY_IOPAD_SIZE);
|
||||
if (key_len > KEY_IOPAD_SIZE) {
|
||||
Log_e("key_len > size(%d) of array", KEY_IOPAD_SIZE);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@@ -274,7 +274,6 @@ ListNode *list_iterator_next(ListIterator *self)
|
||||
void list_iterator_destroy(ListIterator *self)
|
||||
{
|
||||
HAL_Free(self);
|
||||
self = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -19,13 +19,13 @@
|
||||
|
||||
int ring_buff_init(sRingbuff* ring_buff, char* buff, uint32_t size )
|
||||
{
|
||||
ring_buff->buffer = buff;
|
||||
ring_buff->buffer = buff;
|
||||
ring_buff->size = size;
|
||||
ring_buff->readpoint = 0;
|
||||
ring_buff->writepoint = 0;
|
||||
memset(ring_buff->buffer, 0, ring_buff->size);
|
||||
ring_buff->full = false;
|
||||
|
||||
memset(ring_buff->buffer, 0, ring_buff->size);
|
||||
ring_buff->full = false;
|
||||
|
||||
return RINGBUFF_OK;
|
||||
}
|
||||
|
||||
@@ -33,74 +33,59 @@ int ring_buff_flush(sRingbuff* ring_buff)
|
||||
{
|
||||
ring_buff->readpoint = 0;
|
||||
ring_buff->writepoint = 0;
|
||||
memset(ring_buff->buffer, 0, ring_buff->size);
|
||||
ring_buff->full = false;
|
||||
|
||||
memset(ring_buff->buffer, 0, ring_buff->size);
|
||||
ring_buff->full = false;
|
||||
|
||||
return RINGBUFF_OK;
|
||||
}
|
||||
|
||||
int ring_buff_push_data(sRingbuff* ring_buff, uint8_t *pData, int len)
|
||||
{
|
||||
int i;
|
||||
|
||||
if(len > ring_buff->size)
|
||||
{
|
||||
return RINGBUFF_TOO_SHORT;
|
||||
}
|
||||
int i;
|
||||
|
||||
for(i = 0; i < len; i++)
|
||||
{
|
||||
if(((ring_buff->writepoint + 1) % ring_buff->size) == ring_buff->readpoint)
|
||||
{
|
||||
ring_buff->full = true;
|
||||
return RINGBUFF_FULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(ring_buff->writepoint < (ring_buff->size - 1))
|
||||
{
|
||||
ring_buff->writepoint ++;
|
||||
}
|
||||
else
|
||||
{
|
||||
ring_buff->writepoint = 0;
|
||||
}
|
||||
ring_buff->buffer[ring_buff->writepoint] = pData[i];
|
||||
}
|
||||
}
|
||||
if (len > ring_buff->size) {
|
||||
return RINGBUFF_TOO_SHORT;
|
||||
}
|
||||
|
||||
return RINGBUFF_OK;
|
||||
for (i = 0; i < len; i++) {
|
||||
if (((ring_buff->writepoint + 1) % ring_buff->size) == ring_buff->readpoint) {
|
||||
ring_buff->full = true;
|
||||
return RINGBUFF_FULL;
|
||||
} else {
|
||||
if (ring_buff->writepoint < (ring_buff->size - 1)) {
|
||||
ring_buff->writepoint ++;
|
||||
} else {
|
||||
ring_buff->writepoint = 0;
|
||||
}
|
||||
ring_buff->buffer[ring_buff->writepoint] = pData[i];
|
||||
}
|
||||
}
|
||||
|
||||
return RINGBUFF_OK;
|
||||
}
|
||||
|
||||
int ring_buff_pop_data(sRingbuff* ring_buff, uint8_t *pData, int len)
|
||||
{
|
||||
int i;
|
||||
int i;
|
||||
|
||||
if(len > ring_buff->size)
|
||||
{
|
||||
return RINGBUFF_TOO_SHORT;
|
||||
}
|
||||
if (len > ring_buff->size) {
|
||||
return RINGBUFF_TOO_SHORT;
|
||||
}
|
||||
|
||||
for(i = 0; i < len; i++)
|
||||
{
|
||||
if(ring_buff->writepoint == ring_buff->readpoint)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(ring_buff->readpoint == (ring_buff->size - 1))
|
||||
{
|
||||
ring_buff->readpoint = 0;
|
||||
}
|
||||
for (i = 0; i < len; i++) {
|
||||
if (ring_buff->writepoint == ring_buff->readpoint) {
|
||||
break;
|
||||
} else {
|
||||
if (ring_buff->readpoint == (ring_buff->size - 1)) {
|
||||
ring_buff->readpoint = 0;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
ring_buff->readpoint++;
|
||||
}
|
||||
pData[i] = ring_buff->buffer[ring_buff->readpoint];
|
||||
}
|
||||
}
|
||||
|
||||
return i;
|
||||
else {
|
||||
ring_buff->readpoint++;
|
||||
}
|
||||
pData[i] = ring_buff->buffer[ring_buff->readpoint];
|
||||
}
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
@@ -16,29 +16,34 @@
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#include "utils_timer.h"
|
||||
|
||||
bool expired(Timer *timer) {
|
||||
|
||||
bool expired(Timer *timer)
|
||||
{
|
||||
return HAL_Timer_expired(timer);
|
||||
}
|
||||
|
||||
void countdown_ms(Timer *timer, unsigned int timeout_ms) {
|
||||
void countdown_ms(Timer *timer, unsigned int timeout_ms)
|
||||
{
|
||||
HAL_Timer_countdown_ms(timer, timeout_ms);
|
||||
}
|
||||
|
||||
void countdown(Timer *timer, unsigned int timeout) {
|
||||
void countdown(Timer *timer, unsigned int timeout)
|
||||
{
|
||||
HAL_Timer_countdown(timer, timeout);
|
||||
}
|
||||
|
||||
int left_ms(Timer *timer) {
|
||||
int left_ms(Timer *timer)
|
||||
{
|
||||
return HAL_Timer_remain(timer);
|
||||
}
|
||||
|
||||
void InitTimer(Timer *timer) {
|
||||
void InitTimer(Timer *timer)
|
||||
{
|
||||
HAL_Timer_init(timer);
|
||||
}
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user