原帧格式迁移到新帧格式
parent
f2764c656c
commit
14c7af02bf
|
@ -0,0 +1,31 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.35130.168
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WinDataHubs", "WinDataHubs.vcxproj", "{2192CF4F-DE56-4896-9EA1-4C61B40590A5}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{2192CF4F-DE56-4896-9EA1-4C61B40590A5}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{2192CF4F-DE56-4896-9EA1-4C61B40590A5}.Debug|x64.Build.0 = Debug|x64
|
||||
{2192CF4F-DE56-4896-9EA1-4C61B40590A5}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{2192CF4F-DE56-4896-9EA1-4C61B40590A5}.Debug|x86.Build.0 = Debug|Win32
|
||||
{2192CF4F-DE56-4896-9EA1-4C61B40590A5}.Release|x64.ActiveCfg = Release|x64
|
||||
{2192CF4F-DE56-4896-9EA1-4C61B40590A5}.Release|x64.Build.0 = Release|x64
|
||||
{2192CF4F-DE56-4896-9EA1-4C61B40590A5}.Release|x86.ActiveCfg = Release|Win32
|
||||
{2192CF4F-DE56-4896-9EA1-4C61B40590A5}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {81B0EBA0-C45B-4F9A-B3E8-4780447CB231}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -0,0 +1,167 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>16.0</VCProjectVersion>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ProjectGuid>{2192cf4f-de56-4896-9ea1-4c61b40590a5}</ProjectGuid>
|
||||
<RootNamespace>WinDataHubs</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IncludePath>$(SolutionDir)\..\..\sdk\include;$(IncludePath)</IncludePath>
|
||||
<LibraryPath>$(SolutionDir)\..\..\sdk\lib;$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IncludePath>$(SolutionDir)\..\..\sdk\include;$(IncludePath)</IncludePath>
|
||||
<LibraryPath>$(SolutionDir)\..\..\sdk\Lib;$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>hv.lib;zlibd.lib;mysqlcppconn.lib;libiconvD.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="eventhandler.cpp" />
|
||||
<ClCompile Include="iconv-utils.cpp" />
|
||||
<ClCompile Include="kutilities.cpp" />
|
||||
<ClCompile Include="main.cpp" />
|
||||
<ClCompile Include="openjson.cpp" />
|
||||
<ClCompile Include="opmysql.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="eventhandler.h" />
|
||||
<ClInclude Include="frame_define.h" />
|
||||
<ClInclude Include="iconv-utils.h" />
|
||||
<ClInclude Include="kdefine.h" />
|
||||
<ClInclude Include="kutilities.h" />
|
||||
<ClInclude Include="mqtt_msg.h" />
|
||||
<ClInclude Include="openjson.h" />
|
||||
<ClInclude Include="opmysql.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
|
@ -56,148 +56,167 @@ void EventHandler::onRecvHandler(hio_t* io, void* buf, int readbytes)
|
|||
return;
|
||||
}
|
||||
|
||||
OpenJson json;
|
||||
|
||||
CODING buf_code = GetCoding((unsigned char*)pReadFrame->frame_content, pReadFrame->frame_len); //判断是否是utf-8
|
||||
|
||||
hlogi("<=== recieve buffer code is [%d]", buf_code);
|
||||
|
||||
std::string msg((char*)pReadFrame->frame_content, pReadFrame->frame_len);
|
||||
|
||||
if( buf_code == CODING::GBK
|
||||
|| buf_code == CODING::UNKOWN )
|
||||
if( Frame_DeviceData_Request == pReadFrame->frame_type )
|
||||
{
|
||||
std::string str_result;
|
||||
//转换为UTF8
|
||||
if( !GBKToUTF8(msg, str_result) )
|
||||
hlogi("<=== reveive device data request");
|
||||
|
||||
OpenJson json;
|
||||
|
||||
CODING buf_code = GetCoding((unsigned char*)pReadFrame->frame_content, pReadFrame->frame_len); //判断是否是utf-8
|
||||
|
||||
hlogi("<=== recieve buffer coding is [%s]", buf_code== GBK ? "GBK": (buf_code == UTF8 ? "UTF8" : "UNKNOWN CODING"));
|
||||
|
||||
//这里将帧内帧的内容转换为字符串,符合json格式的字符串,详见mqtt_msg.h的MessageData结构定义
|
||||
std::string msg((char*)pReadFrame->frame_content + 8, pReadFrame->frame_len - 8);
|
||||
|
||||
if( buf_code == CODING::GBK
|
||||
|| buf_code == CODING::UNKOWN )
|
||||
{
|
||||
hloge("Failed to transfer code from GBK to UTF-8");
|
||||
respFrame.setErrorFrame(ERR_INVALID_UTF8);
|
||||
std::string str_result;
|
||||
//转换为UTF8
|
||||
if( !GBKToUTF8(msg, str_result) )
|
||||
{
|
||||
hloge("Failed to transfer code from GBK to UTF-8");
|
||||
respFrame.setErrorFrame(ERR_INVALID_UTF8);
|
||||
hio_write(io, (void*)&respFrame, sizeof respFrame);
|
||||
return;
|
||||
}
|
||||
|
||||
hlogi("Successfuly transfer code from GBK to UTF-8!");
|
||||
msg = str_result;
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
hlogd("<=== recieve !!VALID!! mqtt pack len =[%d] data=[%s]", msg.length(), msg.c_str()); //这里还是好的
|
||||
#endif
|
||||
|
||||
unsigned int len = msg.length();
|
||||
char* pTmp = new char[len];
|
||||
memcpy(pTmp, msg.c_str(), len);
|
||||
|
||||
std::shared_ptr<char> ptr; //放个智能指针省得忘记删除
|
||||
ptr.reset(pTmp);
|
||||
|
||||
//hlogi("<=== decode OK, msg=[%s]", msg.c_str());
|
||||
|
||||
#if 0
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 17).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 18).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 19).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 20).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 21).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 22).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 23).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 24).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 25).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 26).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 27).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 28).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 29).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 30).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 31).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 32).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 33).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 34).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 61).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 62).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 63).c_str());
|
||||
#endif
|
||||
|
||||
//hlogd("<=== decode OK [\n%s\n]", printHex(pTmp, len).c_str());
|
||||
|
||||
try
|
||||
{
|
||||
if( !json.decode(msg) )
|
||||
{
|
||||
hloge("Failed to decode json string pack , length=%d", readbytes);
|
||||
respFrame.setErrorFrame(ERR_INVALID_JSON_FMT);
|
||||
hio_write(io, (void*)&respFrame, sizeof respFrame);
|
||||
return;
|
||||
}
|
||||
|
||||
std::string fsucode = json["FsuCode"].s();
|
||||
std::string msg_type = json["type"].s();
|
||||
std::string timestamp = get_current_timestamp(); // json["TimeStamp"].s();
|
||||
|
||||
if( fsucode.length() == 0 )
|
||||
{
|
||||
//delete[] pTmp;
|
||||
hlogw("!!empty fsucode recieved!");
|
||||
respFrame.setErrorFrame(ERR_INVALID_FSUCODE);
|
||||
hio_write(io, (void*)&respFrame, sizeof respFrame);
|
||||
return;
|
||||
}
|
||||
|
||||
hlogi("<=== decode OK, recieve fsucode=[%s] type=[%s] ts=[%s]", fsucode.c_str(), msg_type.c_str(), timestamp.c_str());
|
||||
|
||||
hio_write(io, (void*)&respFrame, sizeof respFrame);
|
||||
|
||||
#ifdef _DEBUG
|
||||
hlogd("<<<<Check Mem after decode here>>>> \n[\n%s\n]\n", printHex(pTmp, len).c_str());
|
||||
#endif
|
||||
|
||||
std::string out_compress;
|
||||
|
||||
int zip_ret = 0;
|
||||
if( (zip_ret = CompressString(pTmp, len, out_compress, Z_DEFAULT_COMPRESSION)) != Z_OK )
|
||||
{
|
||||
hloge("Failed to compress source data, zip return value %d", zip_ret);
|
||||
return;
|
||||
}
|
||||
|
||||
hlogd("<<<<Compress result: string size from original [%d] to [%d]", len, out_compress.size());
|
||||
|
||||
#ifdef _DEBUG
|
||||
hlogd("<<<<Compressed string here>>>> \n[\n%s\n]\n", printHex(out_compress.c_str(), out_compress.size()).c_str());
|
||||
#endif
|
||||
//std::string msg2(pTmp, len);
|
||||
|
||||
if( msg_type == "gateway-data"
|
||||
|| msg_type == "gateway-alarmdata"
|
||||
|| msg_type == "gateway-writedata"
|
||||
|| msg_type == "gateway-readdata"
|
||||
|| msg_type == "web-write"
|
||||
|| msg_type == "web-alarm" )
|
||||
{
|
||||
auto& IdCodeContent = json["IdCodeContent"];
|
||||
if( IdCodeContent.size() <= 0 )
|
||||
{
|
||||
//delete[] pTmp;
|
||||
hloge("invalid IdCodeContent's size: %d", IdCodeContent.size());
|
||||
return;
|
||||
}
|
||||
|
||||
auto& pNode = IdCodeContent[0]; //这是只解析第一个节点
|
||||
std::string oid = pNode["OID"].s();
|
||||
|
||||
//OpDatabase::getInstance()->InsertMessage(timestamp, msg_type, fsucode, out_compress, (int)pData->mqtt_topic, (int)pData->device_id);
|
||||
}
|
||||
|
||||
if( msg_type == "web-read" )
|
||||
{
|
||||
auto& IdCodeContent = json["IdCodes"];
|
||||
if( IdCodeContent.size() <= 0 )
|
||||
{
|
||||
hloge("invalid IdCodes's size: %d", IdCodeContent.size());
|
||||
//delete[] pTmp;
|
||||
return;
|
||||
}
|
||||
|
||||
auto& pNode = IdCodeContent[0]; //这是只解析第一个节点
|
||||
std::string oid = pNode.s();
|
||||
|
||||
//OpDatabase::getInstance()->InsertMessage(timestamp, msg_type, fsucode, out_compress, (int)pData->mqtt_topic, (int)pData->device_id);
|
||||
}
|
||||
//delete[] pTmp;
|
||||
}
|
||||
catch( const char* errMsg )
|
||||
{
|
||||
hloge("Failed to decode json string pack , catch error:%s", errMsg);
|
||||
respFrame.setErrorFrame(ERR_INVALID_JSON_FMT);
|
||||
hio_write(io, (void*)&respFrame, sizeof respFrame);
|
||||
return;
|
||||
}
|
||||
|
||||
hlogi("Successfuly transfer code from GBK to UTF-8!");
|
||||
msg = str_result;
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
hlogd("<=== recieve !!VALID!! mqtt pack len =[%d] data=[%s]", msg.length(), msg.c_str()); //这里还是好的
|
||||
#endif
|
||||
|
||||
unsigned int len = msg.length();
|
||||
char* pTmp = new char[len];
|
||||
memcpy(pTmp, msg.c_str(), len);
|
||||
|
||||
std::shared_ptr<char> ptr; //放个智能指针省得忘记删除
|
||||
ptr.reset(pTmp);
|
||||
|
||||
//hlogi("<=== decode OK, msg=[%s]", msg.c_str());
|
||||
|
||||
#if 0
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 17).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 18).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 19).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 20).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 21).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 22).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 23).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 24).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 25).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 26).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 27).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 28).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 29).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 30).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 31).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 32).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 33).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 34).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 61).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 62).c_str());
|
||||
hlogi("<=== decode OK [\n%s\n]", printHex(pTmp, 63).c_str());
|
||||
#endif
|
||||
|
||||
//hlogd("<=== decode OK [\n%s\n]", printHex(pTmp, len).c_str());
|
||||
|
||||
if( !json.decode(msg) )
|
||||
{
|
||||
//delete[] pTmp;
|
||||
hloge("Failed to decode json string pack , length=%d", readbytes);
|
||||
hio_write(io, (void*)&respFrame, sizeof respFrame);
|
||||
return;
|
||||
}
|
||||
|
||||
hio_write(io, (void*)&respFrame, sizeof respFrame);
|
||||
|
||||
std::string fsucode = json["FsuCode"].s();
|
||||
std::string msg_type = json["type"].s();
|
||||
std::string timestamp = get_current_timestamp(); // json["TimeStamp"].s();
|
||||
|
||||
if( fsucode.length() == 0 )
|
||||
{
|
||||
//delete[] pTmp;
|
||||
hlogw("!!empty fsucode recieved!");
|
||||
return;
|
||||
}
|
||||
|
||||
hlogi("<=== decode OK, recieve fsucode=[%s] type=[%s] ts=[%s]", fsucode.c_str(), msg_type.c_str(), timestamp.c_str());
|
||||
|
||||
#ifdef _DEBUG
|
||||
hlogd("<<<<Check Mem after decode here>>>> \n[\n%s\n]\n", printHex(pTmp, len).c_str());
|
||||
#endif
|
||||
|
||||
std::string out_compress;
|
||||
|
||||
int zip_ret = 0;
|
||||
if( (zip_ret = CompressString(pTmp, len, out_compress, Z_DEFAULT_COMPRESSION)) != Z_OK )
|
||||
{
|
||||
hloge("Failed to compress source data, zip return value %d", zip_ret);
|
||||
return;
|
||||
}
|
||||
|
||||
hlogd("<<<<Compress result: string size from original [%d] to [%d]", len, out_compress.size());
|
||||
|
||||
#ifdef _DEBUG
|
||||
hlogd("<<<<Compress string here>>>> \n[\n%s\n]\n", printHex(out_compress.c_str(), out_compress.size()).c_str());
|
||||
#endif
|
||||
//std::string msg2(pTmp, len);
|
||||
|
||||
if( msg_type == "gateway-data"
|
||||
|| msg_type == "gateway-alarmdata"
|
||||
|| msg_type == "gateway-writedata"
|
||||
|| msg_type == "gateway-readdata"
|
||||
|| msg_type == "web-write"
|
||||
|| msg_type == "web-alarm" )
|
||||
{
|
||||
auto& IdCodeContent = json["IdCodeContent"];
|
||||
if( IdCodeContent.size() <= 0 )
|
||||
{
|
||||
//delete[] pTmp;
|
||||
hloge("invalid IdCodeContent's size: %d", IdCodeContent.size());
|
||||
return;
|
||||
}
|
||||
|
||||
auto& pNode = IdCodeContent[0]; //这是只解析第一个节点
|
||||
std::string oid = pNode["OID"].s();
|
||||
|
||||
//OpDatabase::getInstance()->InsertMessage(timestamp, msg_type, fsucode, out_compress, (int)pData->mqtt_topic, (int)pData->device_id);
|
||||
}
|
||||
|
||||
if( msg_type == "web-read" )
|
||||
{
|
||||
auto& IdCodeContent = json["IdCodes"];
|
||||
if( IdCodeContent.size() <= 0 )
|
||||
{
|
||||
hloge("invalid IdCodes's size: %d", IdCodeContent.size());
|
||||
//delete[] pTmp;
|
||||
return;
|
||||
}
|
||||
|
||||
auto& pNode = IdCodeContent[0]; //这是只解析第一个节点
|
||||
std::string oid = pNode.s();
|
||||
|
||||
//OpDatabase::getInstance()->InsertMessage(timestamp, msg_type, fsucode, out_compress, (int)pData->mqtt_topic, (int)pData->device_id);
|
||||
}
|
||||
//delete[] pTmp;
|
||||
}
|
|
@ -11,6 +11,8 @@ typedef enum tagErrorCode : unsigned char
|
|||
ERR_INVALID_LEN = 0X01,
|
||||
ERR_INVALID_UTF8 = 0X02,
|
||||
ERR_INVALID_BUF_LEN = 0X03,
|
||||
ERR_INVALID_JSON_FMT = 0X04,
|
||||
ERR_INVALID_FSUCODE = 0X05,
|
||||
ERR_UNKOWN = 0XFF
|
||||
}ErrorCode;
|
||||
|
||||
|
|
|
@ -20,10 +20,13 @@
|
|||
#include <stdarg.h>
|
||||
#include <string>
|
||||
|
||||
#include <hv/hlog.h>
|
||||
|
||||
#include "openjson.h"
|
||||
|
||||
//#define PRINTF printf
|
||||
#define PRINTF hloge
|
||||
|
||||
#define PRINTF printf
|
||||
#if (defined(_MSC_VER) && (_MSC_VER >= 1400 ))
|
||||
inline int SNPRINTF(char* buffer, size_t size, const char* format, ...)
|
||||
{
|
||||
|
@ -783,12 +786,16 @@ OpenJson& OpenJson::object(const char* key)
|
|||
{
|
||||
if (type_ == ARRAY)
|
||||
{
|
||||
Log("JsonNode must be OBJECT, not ARRAY");
|
||||
PRINTF("JsonNode must be OBJECT, not ARRAY");
|
||||
}
|
||||
type_ = OBJECT;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( !box_ )
|
||||
{
|
||||
PRINTF("JsonNode must be OBJECT, not NOTHING! key:[%s]", key);
|
||||
}
|
||||
assert(box_);
|
||||
}
|
||||
if (!box_) box_ = new Box;
|
||||
|
@ -828,7 +835,7 @@ void OpenJson::addNode(OpenJson* node)
|
|||
if (!node) return;
|
||||
if (type_ != OBJECT && type_ != ARRAY)
|
||||
{
|
||||
Log("JsonNode must be OBJECT or ARRAY");
|
||||
PRINTF("JsonNode must be OBJECT or ARRAY");
|
||||
type_ = node->key_ ? OBJECT : ARRAY;
|
||||
}
|
||||
if (box_ == 0) box_ = new Box;
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue