|
@@ -344,6 +344,43 @@ void HTTP_GetSettings(char *buf)
|
|
|
//printf(buf);
|
|
|
}
|
|
|
|
|
|
+uint8_t ConvertStringForJSON(char *inStr, char *paramValue, uint8_t inLen)
|
|
|
+{
|
|
|
+ int len = 0, len2 = 0;
|
|
|
+ char *strPtr = 0;
|
|
|
+ uint8_t i = 0;
|
|
|
+
|
|
|
+ while(i < inLen){
|
|
|
+
|
|
|
+ strPtr = strstr(inStr, "\"");
|
|
|
+
|
|
|
+ if (strPtr != 0){
|
|
|
+ len = strPtr - inStr;
|
|
|
+ if(len != 0){
|
|
|
+ strncat(paramValue, inStr, len);
|
|
|
+ }
|
|
|
+ strncat(paramValue, "\\", 1);
|
|
|
+ strncat(paramValue, &inStr[len], 1);
|
|
|
+ inStr = inStr + len + 1;
|
|
|
+ i = i + len + 1;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ if(paramValue != 0){
|
|
|
+ len2 = inLen - i;
|
|
|
+ strncat(paramValue, inStr, len2);
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(inLen == 0){
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ return 1;
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* @brief Возвращяет строку с информацией об устройстве
|
|
|
* @retval None
|
|
@@ -351,7 +388,8 @@ void HTTP_GetSettings(char *buf)
|
|
|
// TODO Согласовать максимальную длину строк
|
|
|
void HTTP_GetInfo(char *buf)
|
|
|
{
|
|
|
- char str[40];
|
|
|
+ char str[110];
|
|
|
+ char tmp_str[220];
|
|
|
uint8_t len;
|
|
|
|
|
|
/* Headers для поддержки saffari */
|
|
@@ -382,20 +420,48 @@ void HTTP_GetInfo(char *buf)
|
|
|
strncat(buf, str, len);
|
|
|
|
|
|
GetNameDeviceStr(str, &len);
|
|
|
+ str[len] = 0;
|
|
|
strcat(buf, "\",\"sysname\":\"");
|
|
|
- strncat(buf, str, len);
|
|
|
+ memset(tmp_str, 0, sizeof(tmp_str));
|
|
|
+ if(ConvertStringForJSON(str, tmp_str, len)){
|
|
|
+ strncat(buf, tmp_str, strlen(tmp_str));
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ strncat(buf, str, len);
|
|
|
+ }
|
|
|
|
|
|
- GetOwnerStr(str, &len);
|
|
|
+ GetOwnerStr(str, &len);
|
|
|
+ str[len] = 0;
|
|
|
strcat(buf, "\",\"owner\":\"");
|
|
|
- strncat(buf, str, len);
|
|
|
+ memset(tmp_str, 0, sizeof(tmp_str));
|
|
|
+ if(ConvertStringForJSON(str, tmp_str, len)){
|
|
|
+ strncat(buf, tmp_str, strlen(tmp_str));
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ strncat(buf, str, len);
|
|
|
+ }
|
|
|
|
|
|
- GetLocationStr(str, &len);
|
|
|
+ GetLocationStr(str, &len);
|
|
|
+ str[len] = 0;
|
|
|
strcat(buf, "\",\"sysLocation\":\"");
|
|
|
- strncat(buf, str, len);
|
|
|
+ memset(tmp_str, 0, sizeof(tmp_str));
|
|
|
+ if(ConvertStringForJSON(str, tmp_str, len)){
|
|
|
+ strncat(buf, tmp_str, strlen(tmp_str));
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ strncat(buf, str, len);
|
|
|
+ }
|
|
|
|
|
|
- GetCommentsStr(str, &len);
|
|
|
+ GetCommentsStr(str, &len);
|
|
|
+ str[len] = 0;
|
|
|
strcat(buf, "\",\"comment\":\"");
|
|
|
- strncat(buf, str, len);
|
|
|
+ memset(tmp_str, 0, sizeof(tmp_str));
|
|
|
+ if(ConvertStringForJSON(str, tmp_str, len)){
|
|
|
+ strncat(buf, tmp_str, strlen(tmp_str));
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ strncat(buf, str, len);
|
|
|
+ }
|
|
|
|
|
|
GetUPSModelStr(str, &len);
|
|
|
strcat(buf, "\",\"ups_model\":\"");
|