//#include "sysinfo-app.h" #include "proto-sl651.h" #include "rtc.h" //#include "ff-collected.h" //#include "mjson.h" #include "elog.h" //#include "base64.h" // static uint8_t g_651txbuff[255]; // static uint16_t g_651txbuff_length; static union //如果是切换页面,显示为页面ID { uint32_t Int; uint8_t Byte[4]; } Int; static int g_syn_number = 0; // 打包数据帧 int PP_AddHeader (uint8_t func, char *data, int length, char *txbuff) { int tx_size = 0; uint16_t crc = 0; txbuff[tx_size++] = 0x7E; txbuff[tx_size++] = 0x7E; txbuff[tx_size++] = 0x02; // 根据中心站地址区分版本号 txbuff[tx_size++] = 0xFF; txbuff[tx_size++] = 0xFF; txbuff[tx_size++] = 0;//SysInfo.baseAddr[0]; txbuff[tx_size++] = 0;//SysInfo.baseAddr[1]; //(uint8_t) ( (SysInfo.Addr >> 24) & 0x000000FF); txbuff[tx_size++] = 0;//SysInfo.baseAddr[2]; //(uint8_t) ( (SysInfo.Addr >> 16) & 0x000000FF); txbuff[tx_size++] = 0;//SysInfo.baseAddr[3]; //(uint8_t) ( (SysInfo.Addr >> 8) & 0x000000FF); txbuff[tx_size++] = 0;//SysInfo.baseAddr[4]; //(uint8_t) (SysInfo.Addr & 0x000000FF); txbuff[tx_size++] = func; txbuff[tx_size++] = 0x00; txbuff[tx_size++] = length; // 长度 txbuff[tx_size++] = _651_STX; // dbg_printf ("sizeof (_651_U_Header_t):%d\r\n", tx_size); for (int i = 0; i < length; i++) { txbuff[tx_size++] = data[i]; } txbuff[tx_size++] = 0x03; crc = 0;//bsp_crc_calc16 ( (uint8_t *) txbuff, tx_size); txbuff[tx_size++] = (crc >> 8) & 0x00FF; txbuff[tx_size++] = crc & 0x00FF; return tx_size; // // 计算校验 } // 均匀时段报 int PP_PacketUnifData (char *tx_data) { uint8_t powerdata[26]; //RtcTime rtcTime; //Get_Time (&rtcTime); int tx_size = 0; g_syn_number++; tx_data[tx_size++] = (g_syn_number >> 8) & 0x00FF; tx_data[tx_size++] = g_syn_number & 0xFF; tx_data[tx_size++] = 0x00; // 要素1 瞬时流速 tx_data[tx_size++] = 0x00; // 要素1 瞬时流速 tx_data[tx_size++] = 0x00; // 要素1 瞬时流速 tx_data[tx_size++] = 0x00; // 要素1 瞬时流速 tx_data[tx_size++] = 0x00; // 要素2 瞬时流量 tx_data[tx_size++] = 0x00; // 要素2 瞬时流量 tx_data[tx_size++] = 0x00; // 要素2 瞬时流量 tx_data[tx_size++] = 0x00; // 要素2 瞬时流量 tx_data[tx_size++] = 0x00; // 要素3 累计流量 tx_data[tx_size++] = 0x00; // 要素3 累计流量 tx_data[tx_size++] = 0x00; // 要素3 累计流量 tx_data[tx_size++] = 0x00; // 要素3 累计流量 Int.Int = 0;//= (FF_ReadEcodeData() - SysInfo.SlMinEcode) / SysInfo.SlEcodeCoeff * 100 ; tx_data[tx_size++] = Int.Byte[3]; // 要素4 闸门开度 tx_data[tx_size++] = Int.Byte[2]; // 要素4 闸门开度 tx_data[tx_size++] = Int.Byte[1]; // 要素4 闸门开度 tx_data[tx_size++] = Int.Byte[0]; // 要素4 闸门开度 Int.Int = 0;// (int) bsp_rng_get_number (1000, 1200) * 100; // MbusReadSensorValue (EcodeType) * 100; tx_data[tx_size++] = 0x00; // 要素5 闸门荷重 tx_data[tx_size++] = 0x00; // 要素5 闸门荷重 tx_data[tx_size++] = 0x00; // 要素5 闸门荷重 tx_data[tx_size++] = 0x00; // 要素5 闸门荷重 // 要素6 最大开度 Int.Int = 0;// SysInfo.SlMaxOpen * 100; tx_data[tx_size++] = Int.Byte[3]; tx_data[tx_size++] = Int.Byte[2]; tx_data[tx_size++] = Int.Byte[1]; tx_data[tx_size++] = Int.Byte[0]; // 要素7 电池电压 Int.Int = 23.5 * 100; tx_data[tx_size++] = Int.Byte[3]; tx_data[tx_size++] = Int.Byte[2]; tx_data[tx_size++] = Int.Byte[1]; tx_data[tx_size++] = Int.Byte[0]; // 要素8 机箱温度 Int.Int = 52.6 * 100; tx_data[tx_size++] = Int.Byte[3]; tx_data[tx_size++] = Int.Byte[2]; tx_data[tx_size++] = Int.Byte[1]; tx_data[tx_size++] = Int.Byte[0]; // 要素9 闸前水位 Int.Int = 0 * 100; tx_data[tx_size++] = Int.Byte[3]; tx_data[tx_size++] = Int.Byte[2]; tx_data[tx_size++] = Int.Byte[1]; tx_data[tx_size++] = Int.Byte[0]; // 要素10 充电控制器数据 //FF_ReadPowerData (powerdata) ; for (int i = 0; i < 26; i++) { tx_data[tx_size++] = powerdata[i]; } return tx_size; } // 闸门状态自报 int _651PacketDataSluiceUp (char *tx_data) { // RtcTime rtcTime; // Get_Time (&rtcTime); int tx_size = 0; g_syn_number++; tx_data[tx_size++] = (g_syn_number >> 8) & 0x00FF; tx_data[tx_size++] = g_syn_number & 0xFF; tx_data[tx_size++] = 0x01; tx_data[tx_size++] = 0x01; // 闸门开度 // Int.Int = MbusReadSensorValue (EcodeType) * 100; //dbg_printf ("%d\r\n", Int.Int); tx_data[tx_size++] = Int.Byte[3]; tx_data[tx_size++] = Int.Byte[2]; tx_data[tx_size++] = Int.Byte[1]; tx_data[tx_size++] = Int.Byte[0]; // 闸门荷重 Int.Int = 0;//(int) bsp_rng_get_number (1200, 1400) * 100; tx_data[tx_size++] = Int.Byte[3]; tx_data[tx_size++] = Int.Byte[2]; tx_data[tx_size++] = Int.Byte[1]; tx_data[tx_size++] = Int.Byte[0]; // 闸前水位 Int.Int = 0 * 100; tx_data[tx_size++] = Int.Byte[3]; tx_data[tx_size++] = Int.Byte[2]; tx_data[tx_size++] = Int.Byte[1]; tx_data[tx_size++] = Int.Byte[0]; // 瞬时流量 Int.Int = 0 * 100; tx_data[tx_size++] = Int.Byte[3]; tx_data[tx_size++] = Int.Byte[2]; tx_data[tx_size++] = Int.Byte[1]; tx_data[tx_size++] = Int.Byte[0]; return tx_size; } int _651PacketDataSluiceAck (char *tx_data) { // RtcTime rtcTime; // Get_Time (&rtcTime); int tx_size = 0; g_syn_number++; tx_data[tx_size++] = (g_syn_number >> 8) & 0x00FF; tx_data[tx_size++] = g_syn_number & 0xFF; tx_data[tx_size++] = 0;//rtcTime.year; tx_data[tx_size++] = 0;//rtcTime.month; tx_data[tx_size++] = 0;//rtcTime.day; tx_data[tx_size++] = 0;//rtcTime.hour; tx_data[tx_size++] = 0;//rtcTime.minute; tx_data[tx_size++] = 0;//rtcTime.second; tx_data[tx_size++] = 0;//SysInfo.baseAddr[0]; tx_data[tx_size++] = 0;//SysInfo.baseAddr[1]; //(uint8_t) ( (SysInfo.Addr >> 24) & 0x000000FF); tx_data[tx_size++] = 0;//SysInfo.baseAddr[2]; //(uint8_t) ( (SysInfo.Addr >> 16) & 0x000000FF); tx_data[tx_size++] = 0;//SysInfo.baseAddr[3]; //(uint8_t) ( (SysInfo.Addr >> 8) & 0x000000FF); tx_data[tx_size++] = 0;//SysInfo.baseAddr[4]; //(uint8_t) (SysInfo.Addr & 0x000000FF); return tx_size; } // 打包 基础参数 int Json651PacketBaseInfo (char *outBuffer, int length) { // char devidstr[11]; // int k = 0; // memset (devidstr, 0, sizeof (devidstr)); // hexbyte_to_hex_str (SysInfo.baseAddr, devidstr, 5); // // puthex ( (uint8_t *) devidstr, SysInfo.baseAddr, 5); // struct mjson_fixedbuf fb = { (char *) outBuffer, length - 1, 0}; // k = mjson_printf (&mjson_print_fixed_buf, &fb, "{%Q:%d,%Q:%Q,%Q:%d,%Q:%Q,%Q:%Q,%Q:%Q,%Q:%Q,%Q:%Q,%Q:%Q,%Q:%d,%Q:%d,%Q:%d,%Q:%u}", // "type", 1, // "baseaddr", devidstr, // "bute", 9600, // "remoteAddr", SysInfo.baseRemoteAddr, // "remoteUser", SysInfo.baseRemoteuser, // "remotePass", SysInfo.baseRemotepass, // "userPass", SysInfo.baseUserPassword, // "sysPass", SysInfo.baseSysPassword, // "topic", SysInfo.baseTopic, // "remotePort", SysInfo.baseRemotePort, // "LogInfo", SysInfo.baseLogInfo, // "NetDev", SysInfo.baseNetDev, // "StandTime", SysInfo.baseStandbyTime); // return k; return 0; } // 接口参数设置 int Json651PacketInterfaceInfo (char *outBuffer, int length) { // char u4851funstr[17], u4852funstr[17]; // int k = 0; // memset (u4851funstr, 0, sizeof (u4851funstr)); // memset (u4852funstr, 0, sizeof (u4852funstr)); // hexbyte_to_hex_str ( (char *) SysInfo.u4851Func, u4851funstr, 8); // hexbyte_to_hex_str ( (char *) SysInfo.u4852Func, u4852funstr, 8); // // puthex ( (uint8_t *) devidstr, SysInfo.baseAddr, 5); // struct mjson_fixedbuf fb = { (char *) outBuffer, length - 1, 0}; // k = mjson_printf (&mjson_print_fixed_buf, &fb, "{%Q:%d,%Q:%Q,%Q:%d,%Q:%d,%Q:%d,%Q:%Q,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d}", // "type", 2, // "u4851fun", u4851funstr, // "u4851num", SysInfo.u4851FuncNum, // "u4851bute", SysInfo.u4851Bute, // "u4851para", SysInfo.u4851Para, // "u4852fun", u4852funstr, // "u4852num", SysInfo.u4852FuncNum, // "u4852bute", SysInfo.u4852Bute, // "u4852para", SysInfo.u4852Para, // "di1", SysInfo.DIFunc[0], // "di2", SysInfo.DIFunc[1], // "di3", SysInfo.DIFunc[2], // "di4", SysInfo.DIFunc[3], // "pi1", SysInfo.PIFunc[0], // "pi2", SysInfo.PIFunc[1], // "pi3", SysInfo.PIFunc[2], // "pi4", SysInfo.PIFunc[3], // "ai1", SysInfo.AIFunc[0], // "ai2", SysInfo.AIFunc[1], // "k1", SysInfo.KEYFunc[0], // "k2", SysInfo.KEYFunc[1], // "pwm1", SysInfo.PWMFunc[0], // "pwm2", SysInfo.PWMFunc[1], // "pwm3", SysInfo.PWMFunc[2], // "pwm4", SysInfo.PWMFunc[3]); // return k; return 0; } int Json651PacketSluiceInfo (char *outBuffer, int length) { // char devidstr[11]; // int k = 0; // memset (devidstr, 0, sizeof (devidstr)); // hexbyte_to_hex_str (SysInfo.baseAddr, devidstr, 5); // // puthex ( (uint8_t *) devidstr, SysInfo.baseAddr, 5); // struct mjson_fixedbuf fb = { (char *) outBuffer, length - 1, 0}; // k = mjson_printf (&mjson_print_fixed_buf, &fb, "{%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d,%Q:%d}", // "type", 3, // "maxopen", SysInfo.SlMaxOpen, // "maxcode", SysInfo.SlMaxEcode, // "mincode", SysInfo.SlMinEcode, // "codecoff", SysInfo.SlEcodeCoeff, // "codetype", SysInfo.SlEcodeType, // "loadtype", SysInfo.SlLoadType, // "motortype", SysInfo.SlMotorType, // "flowtype", SysInfo.SlFlowType, // "motorspeed", SysInfo.SlMotorSpeed); // return k; return 0; } // uint16_t WTWidth;// = 100; // 宽度 cm // Uint16_t WTSpeed[16];// = 100.0; // 流速 cm/s // Uint16_t WTSenLoc[16]; // // Uint16_t WTFlow[16]; // 流量 // uint8_t WTSenCount;// 层数 int Json651PacketWaterInfo (char *outBuffer, int length) { // int k = 0; // char flowbuff[64]; // char speedbuff[64]; // char locbuff[64]; // memset (flowbuff, 0, 64); // memset (speedbuff, 0, 64); // memset (locbuff, 0, 64); // B64Encode ( (uint8_t *) SysInfo.WTFlow, 32, flowbuff, 64); // B64Encode ( (uint8_t *) SysInfo.WTSpeed, 32, speedbuff, 64); // B64Encode ( (uint8_t *) SysInfo.WTSenLoc, 32, locbuff, 64); // struct mjson_fixedbuf fb = { (char *) outBuffer, length - 1, 0}; // k = mjson_printf (&mjson_print_fixed_buf, &fb, "{%Q:%d,%Q:%d,%Q:%d,%Q:%Q,%Q:%Q,%Q:%Q}", // "type", 4, // "wtwidth", SysInfo.WTWidth, // "wtsencount", SysInfo.WTSenCount, // "wtflow", flowbuff, // "wtspeed", speedbuff, // "wtsenloc", locbuff // ); // return k; return 0; } //int Json651UnpackInfo (char *input, int length, SysInfoConfig_t *info) //{ // double Number; // int responce, resonces[32] = {0}; // char acs_data[64]; // int k = 0; // //char test[64] = {0}; // if (mjson ( (char const *) input, strlen ( (char const *) input), NULL, NULL) != strlen ( (char const *) input)) // { // // 乱码或者格式不对 // dbg_printf ("&&&&&&&&&&&&&&&&&\r\n"); // return -1; // } // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.type", &Number); // info->type = Number; // if (info->type == 1) // base info // { // // 设备编码 // memset (acs_data, 0, 64); // responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.baseaddr", (char*) acs_data, sizeof (acs_data) - 1) ; // resonces[k++] = responce; // hexstr_to_hexbyte (acs_data, info->info.base.baseAddr, responce); // // 波特率 // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.bute", &Number); // info->info.base.baseBute = Number; // // 远程地址 // memset (acs_data, 0, 64); // responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.remoteAddr", (char*) acs_data, sizeof (acs_data) - 1); // resonces[k++] = responce; // memcpy (info->info.base.baseRemoteAddr, acs_data, 32); // //mqtt用户 // memset (acs_data, 0, 64); // responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.remoteUser", (char*) acs_data, sizeof (acs_data) - 1) ; // resonces[k++] = responce; // memcpy (info->info.base.baseRemoteuser, acs_data, 32); // //mqtt密码 // memset (acs_data, 0, 64); // responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.remotePass", (char*) acs_data, sizeof (acs_data) - 1) ; // resonces[k++] = responce; // memcpy (info->info.base.baseRemotepass, acs_data, 32); // //屏幕用户登录密码 // memset (acs_data, 0, 64); // responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.userPass", (char*) acs_data, sizeof (acs_data) - 1); // resonces[k++] = responce; // memcpy (info->info.base.baseUserPassword, acs_data, 32); // //屏幕管理员登录密码 // memset (acs_data, 0, 64); // responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.sysPass", (char*) acs_data, sizeof (acs_data) - 1); // resonces[k++] = responce; // memcpy (info->info.base.baseSysPassword, acs_data, 32); // //订阅topic // memset (acs_data, 0, 64); // responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.topic", (char*) acs_data, sizeof (acs_data) - 1); // resonces[k++] = responce; // memcpy (info->info.base.baseTopic, acs_data, 32); // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.remotePort", &Number); // info->info.base.baseRemotePort = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.LogInfo", &Number); // info->info.base.baseLogInfo = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.NetDev", &Number); // info->info.base.baseNetDev = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.StandTime", &Number); // info->info.base.baseStandbyTime = Number; // } // else if (info->type == 2) // // { // // 4851 func // memset (acs_data, 0, 64); // responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.u4851fun", (char*) acs_data, sizeof (acs_data) - 1); // resonces[k++] = responce; // hexstr_to_hexbyte (acs_data, (char *) info->info.interface.u4851Func, responce); // // 4852 func // memset (acs_data, 0, 64); // responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.u4852fun", (char*) acs_data, sizeof (acs_data) - 1); // resonces[k++] = responce; // hexstr_to_hexbyte (acs_data, (char *) info->info.interface.u4852Func, responce); // //memcpy(info->info.interface.u4851Func,acs_data,32); // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.u4851num", &Number); // info->info.interface.u4851FuncNum = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.u4852num", &Number); // info->info.interface.u4852FuncNum = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.u4851para", &Number); // info->info.interface.u4851Para = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.u4852para", &Number); // info->info.interface.u4852Para = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.u4851bute", &Number); // info->info.interface.u4851Bute = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.u4852bute", &Number); // info->info.interface.u4852Bute = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.di1", &Number); // info->info.interface.DI1Func = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.di2", &Number); // info->info.interface.DI2Func = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.di3", &Number); // info->info.interface.DI3Func = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.di4", &Number); // info->info.interface.DI4Func = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.pi1", &Number); // info->info.interface.PI1Func = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.pi2", &Number); // info->info.interface.PI2Func = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.pi3", &Number); // info->info.interface.PI3Func = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.pi4", &Number); // info->info.interface.PI4Func = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.ai1", &Number); // info->info.interface.AI1Func = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.ai2", &Number); // info->info.interface.AI2Func = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.k1", &Number); // info->info.interface.KEY1Func = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.k2", &Number); // info->info.interface.KEY2Func = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.pwm1", &Number); // info->info.interface.PWM1Func = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.pwm2", &Number); // info->info.interface.PWM2Func = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.pwm3", &Number); // info->info.interface.PWM3Func = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.pwm4", &Number); // info->info.interface.PWM4Func = Number; // } // else if (info->type == 3) // // { // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.maxopen", &Number); // info->info.sluice.SlMaxOpen = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.mincode", &Number); // info->info.sluice.SlMinEcode = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.maxcode", &Number); // info->info.sluice.SlMaxEcode = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.codecoff", &Number); // info->info.sluice.SlEcodeCoeff = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.codetype", &Number); // info->info.sluice.SlEcodeType = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.loadtype", &Number); // info->info.sluice.SlLoadType = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.flowtype", &Number); // info->info.sluice.SlFlowType = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.motorspeed", &Number); // info->info.sluice.SlMotorSpeed = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.motortype", &Number); // info->info.sluice.SlMotorType = Number; //// resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.motortype", &Number); //// info->info.sluice.SlMotorType = Number; // } // else if (info->type == 4) // // { // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.wtwidth", &Number); // info->info.water.WTWidth = Number; // resonces[k++] = mjson_get_number ( (char const *) input, strlen ( (char const *) input), "$.wtsencount", &Number); // info->info.water.WTSenCount = Number; // memset (acs_data, 0, 64); // responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.wtflow", (char*) acs_data, sizeof (acs_data) - 1); // resonces[k++] = responce; // B64Decode (acs_data, responce, (uint8_t *) info->info.water.WTFlow); // memset (acs_data, 0, 64); // responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.wtspeed", (char*) acs_data, sizeof (acs_data) - 1); // resonces[k++] = responce; // B64Decode (acs_data, responce, (uint8_t *) info->info.water.WTSpeed); // memset (acs_data, 0, 64); // responce = mjson_get_string ( (char const*) input, strlen ( (char const*) input), "$.wtsenloc", (char*) acs_data, sizeof (acs_data) - 1); // resonces[k++] = responce; // dbg_printf ("%s\r\n", acs_data); // B64Decode (acs_data, responce, (uint8_t *) info->info.water.WTSenLoc); // //memcpy((uint8_t *)info->info.water.WTSenLoc,test,32); //// for(int i =0;i <32;i++) //// { //// dbg_printf("%02X ",test[i]); //// } //// dbg_printf("\r\n"); // //dbg_printf("%u,%u,%u,%u\r\n",info->info.water.WTSenLoc[0],info->info.water.WTSenLoc[1],info->info.water.WTSenLoc[2],info->info.water.WTSenLoc[3]) ; // //hexstr_to_hexbyte (acs_data, (char *) info->info.interface.u4852Func, responce); // } // else // { // return -1; // } // for (int t = 0; t < k; t++) // { // if (resonces[t] < 0) // return -2; // } // return 0; //return 0; //}