Commit 4e780248 authored by captainwong's avatar captainwong

release 1.3.0

parent d630422f
# Ademco Change Log # Ademco Change Log
## 1.3.0
- add `file` for parse error
- fix `struct tm not initilized` on parse
- fix parsing pointer on parse timestamp failed
## 1.2.0 ## 1.2.0
- add config - add config
......
...@@ -991,6 +991,7 @@ AdemcoParseResult ademcoPacketParse(const ademco_char_t* buff, size_t len, ...@@ -991,6 +991,7 @@ AdemcoParseResult ademcoPacketParse(const ademco_char_t* buff, size_t len,
if (len < 9) { if (len < 9) {
ADEMCO_FILL_PARSE_ERROR(err, 0, "RESULT_NOT_ENOUGH");
return RESULT_NOT_ENOUGH; return RESULT_NOT_ENOUGH;
} }
...@@ -1023,6 +1024,7 @@ AdemcoParseResult ademcoPacketParse(const ademco_char_t* buff, size_t len, ...@@ -1023,6 +1024,7 @@ AdemcoParseResult ademcoPacketParse(const ademco_char_t* buff, size_t len,
} }
len_needed = 9 + pkt->len + 1; len_needed = 9 + pkt->len + 1;
if (len < len_needed) { if (len < len_needed) {
ADEMCO_FILL_PARSE_ERROR(err, p - buff, "RESULT_NOT_ENOUGH");
return RESULT_NOT_ENOUGH; return RESULT_NOT_ENOUGH;
} else if (len_needed >= ADEMCO_PACKET_MAX_LEN) { } else if (len_needed >= ADEMCO_PACKET_MAX_LEN) {
dline; dline;
...@@ -1141,7 +1143,7 @@ AdemcoParseResult ademcoPacketParse(const ademco_char_t* buff, size_t len, ...@@ -1141,7 +1143,7 @@ AdemcoParseResult ademcoPacketParse(const ademco_char_t* buff, size_t len,
dline; dline;
ADEMCO_FILL_PARSE_ERROR(err, p - buff, "acct too long"); ADEMCO_FILL_PARSE_ERROR(err, p - buff, "acct too long");
return RESULT_ERROR; return RESULT_ERROR;
} }
strncpy(pkt->acct, (const char*)pacct, p - pacct); strncpy(pkt->acct, (const char*)pacct, p - pacct);
pkt->acct[p - pacct] = '\0'; pkt->acct[p - pacct] = '\0';
...@@ -1200,7 +1202,7 @@ AdemcoParseResult ademcoPacketParse(const ademco_char_t* buff, size_t len, ...@@ -1200,7 +1202,7 @@ AdemcoParseResult ademcoPacketParse(const ademco_char_t* buff, size_t len,
// timestamp, _%02d:%02d:%02d,%02d-%02d-%04d // timestamp, _%02d:%02d:%02d,%02d-%02d-%04d
// only check lengh, if format is incorrect, use local time instead // only check lengh, if format is incorrect, use local time instead
if (pend - p == ADEMCO_PACKET_TIMESTAMP_LEN) { if (pend - p == ADEMCO_PACKET_TIMESTAMP_LEN) {
struct tm tm; struct tm tm = { 0 };
do { do {
if (*p++ != '_') { if (*p++ != '_') {
break; break;
...@@ -1247,6 +1249,7 @@ AdemcoParseResult ademcoPacketParse(const ademco_char_t* buff, size_t len, ...@@ -1247,6 +1249,7 @@ AdemcoParseResult ademcoPacketParse(const ademco_char_t* buff, size_t len,
pkt->timestamp = mktime(&tm); pkt->timestamp = mktime(&tm);
if (pkt->timestamp <= 0) { // use local time instead if (pkt->timestamp <= 0) { // use local time instead
pkt->timestamp = time(NULL); pkt->timestamp = time(NULL);
p = pend;
} }
} else { } else {
dline; dline;
......
...@@ -194,6 +194,7 @@ typedef enum AdemcoParseResult { ...@@ -194,6 +194,7 @@ typedef enum AdemcoParseResult {
// 安定宝协议解析错误信息 // 安定宝协议解析错误信息
typedef struct AdemcoParseError { typedef struct AdemcoParseError {
const char* file; // user do not free
int line; // line number in ademco.c int line; // line number in ademco.c
size_t offset; // error offset size_t offset; // error offset
const char* msg; // user do not free const char* msg; // user do not free
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#define ADEMCO_FILL_PARSE_ERROR(err, offset_, msg_) \ #define ADEMCO_FILL_PARSE_ERROR(err, offset_, msg_) \
do { \ do { \
if (err) { \ if (err) { \
err->file = __FILE__; \
err->line = __LINE__; \ err->line = __LINE__; \
err->offset = (offset_); \ err->offset = (offset_); \
err->msg = (msg_); \ err->msg = (msg_); \
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
*/ */
#define ADEMCO_VERSION_MAJOR 1 #define ADEMCO_VERSION_MAJOR 1
#define ADEMCO_VERSION_MINOR 2 #define ADEMCO_VERSION_MINOR 3
#define ADEMCO_VERSION_PATCH 0 #define ADEMCO_VERSION_PATCH 0
#define ADEMCO_VERSION_IS_RELEASE 1 #define ADEMCO_VERSION_IS_RELEASE 1
#define ADEMCO_VERSION_SUFFIX "" #define ADEMCO_VERSION_SUFFIX ""
......
xcopy /i /s /y G:\dev_libs\ademco\hb\ademco.h ..\
xcopy /i /s /y G:\dev_libs\ademco\hb\ademco.c ..\
xcopy /i /s /y G:\dev_libs\ademco\hb\hb_com.h ..\
xcopy /i /s /y G:\dev_libs\ademco\hb\hb_com.c ..\
xcopy /i /s /y G:\dev_libs\ademco\hb\ademco_version.h ..\
xcopy /i /s /y G:\dev_libs\ademco\hb\ademco_config.h ..\
xcopy /i /s /y G:\dev_libs\ademco\hb\CHANGELOG.md ..\
#!/bin/bash
set -e
CURRENT_DIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
cd $CURRENT_DIR
cp -f /g/dev_libs/ademco/hb/ademco.h ../
cp -f /g/dev_libs/ademco/hb/ademco.c ../
cp -f /g/dev_libs/ademco/hb/hb_com.h ../
cp -f /g/dev_libs/ademco/hb/hb_com.c ../
cp -f /g/dev_libs/ademco/hb/ademco_version.h ../
cp -f /g/dev_libs/ademco/hb/ademco_config.h ../
cp -f /g/dev_libs/ademco/hb/CHANGELOG.md ../
...@@ -9,7 +9,7 @@ cd $CURRENT_DIR ...@@ -9,7 +9,7 @@ cd $CURRENT_DIR
./examples.bat ./examples.bat
mkdir -p dist/examples/x86 mkdir -p dist/examples/x86
cp "/h/dev/AlarmCenterTestTools/Release/直连型主机模拟器V1.16.exe" dist/examples/x86/ cp "/h/dev/AlarmCenterTestTools/Release/直连型主机模拟器V1.17.exe" dist/examples/x86/
cp "/g/dev_libs/curl-7.87.0/builds/libcurl-vc14-x86-release-dll-ipv6-sspi-schannel/bin/libcurl.dll" dist/examples/x86/ cp "/g/dev_libs/curl-7.87.0/builds/libcurl-vc14-x86-release-dll-ipv6-sspi-schannel/bin/libcurl.dll" dist/examples/x86/
cp ../examples/Win32/Release/server_demo.exe dist/examples/x86/ cp ../examples/Win32/Release/server_demo.exe dist/examples/x86/
cp ../examples/Release/httprelay.exe dist/examples/x86/ cp ../examples/Release/httprelay.exe dist/examples/x86/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment