Commit 2eb71ce1 authored by captainwong's avatar captainwong

building

parent 65bd44e9
# Ademco Change Log
## 2.7.0 2024-6-4 15:24:15
- shrink `ademco_packet_t` size
- add config option for `time`
- add config option `ADEMCO_USE_STATIC_BUF, ADEMCO_USE_UNIQUE_BUF` for embedded systems
- add `ademco_append_data3` and `ademco_make_hb_packet3` for inplace make
- add `ademco_is_valid_password`
- remove `grinwich` related functions, they are shit due to doc lacking, machine's timer is UTC+0
- event 1384 changed to `EVENT_POWER_EXCEPTION`, 3384 changed to `EVENT_POWER_EXCEPTION_RECOVER`
## 2.6.0 2024-4-20 00:58:15
## 2.5.1 2024-4-19 23:39:51
- `ARM_STAY` related functions
......@@ -81,7 +96,7 @@
- add `hb_com_zone_lost_data_iter_t`, `hb_com_zone_lost_data_iter_init` and `hb_com_zone_lost_data_iter_next`
- add `ADEMCO_PACKET_PWD_MIN_LEN`, `ADEMCO_PACKET_PWD_MAX_LEN`
- code styles changed
- when parse returns `ADEMCO_PARSE_RESULT_ERROR`, `*ate` will contains length to ignore, caller must drop `*ate` bytes of data
- when parse returns `ADEMCO_PARSE_RESULT_ERROR`, `*ate` will contains length to ignore, caller must drop `*ate` bytes of dat
## 1.5.1
......
This diff is collapsed.
This diff is collapsed.
#ifndef __ADEMCO_CONFIG_H__
#define __ADEMCO_CONFIG_H__
#pragma once
#ifdef ADEMCO_EXPORTS
#if defined __GNUC__
......@@ -25,9 +23,18 @@ typedef uint8_t ademco_char_t;
typedef char ademco_char_t;
#endif
#ifndef ADEMCO_ENABLE_TO_STRING
#define ADEMCO_ENABLE_TO_STRING 1
#endif
#if ADEMCO_ENABLE_TO_STRING
#ifndef ADEMCO_ENABLE_CHINESE
#define ADEMCO_ENABLE_CHINESE 1
#endif
#else
#undef ADEMCO_ENABLE_CHINESE
#define ADEMCO_ENABLE_CHINESE 0
#endif
#ifndef ADEMCO_ENABLE_PARSE_ERROR
#define ADEMCO_ENABLE_PARSE_ERROR 1
......@@ -47,4 +54,22 @@ typedef char ademco_char_t;
#define ADEMCO_FILL_PARSE_ERROR(err, offset_, msg_)
#endif // ADEMCO_ENABLE_PARSE_ERROR
#ifdef ADEMCO_USE_CUSTOM_TIME_T
extern time_t ademco_get_time_t(time_t* t);
#endif // ADEMCO_USE_CUSTOM_TIME_T
// armclang v6 `gmtime` always return NULL
#ifndef ADEMCO_DISABLE_GMTIME
#define ADEMCO_DISABLE_GMTIME 0
#endif
// embedded system may not have enough stack space
#ifndef ADEMCO_USE_STATIC_BUF
#define ADEMCO_USE_STATIC_BUF 0
#endif
#ifndef ADEMCO_USE_UNIQUE_BUF
#define ADEMCO_USE_UNIQUE_BUF 0
#endif
#endif
......@@ -7,8 +7,8 @@
*/
#define ADEMCO_VERSION_MAJOR 2
#define ADEMCO_VERSION_MINOR 5
#define ADEMCO_VERSION_PATCH 1
#define ADEMCO_VERSION_MINOR 7
#define ADEMCO_VERSION_PATCH 0
#define ADEMCO_VERSION_IS_RELEASE 1
#define ADEMCO_VERSION_SUFFIX ""
......
......@@ -86,7 +86,7 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;WIN32;_DEBUG;ADEMCO_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;ADEMCO_EXPORTS;HB_EXPORTS;WIN32;_DEBUG;ADEMCO_EXPORTS;HB_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
......@@ -104,7 +104,7 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;WIN32;NDEBUG;ADEMCO_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;ADEMCO_EXPORTS;HB_EXPORTS;WIN32;NDEBUG;ADEMCO_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
......@@ -122,7 +122,7 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;_DEBUG;ADEMCO_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;ADEMCO_EXPORTS;HB_EXPORTS;_DEBUG;ADEMCO_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
......@@ -140,7 +140,7 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;NDEBUG;ADEMCO_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;ADEMCO_EXPORTS;HB_EXPORTS;NDEBUG;ADEMCO_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
......@@ -157,11 +157,18 @@
<ItemGroup>
<ClCompile Include="..\..\ademco.c" />
<ClCompile Include="..\..\hb_core.c" />
<ClCompile Include="dllmain.cpp" />
<ClCompile Include="..\..\hb_core_ademco.c" />
<ClCompile Include="..\..\hb_rf.c" />
<ClCompile Include="dllmain.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\ademco.h" />
<ClInclude Include="..\..\ademco_config.h" />
<ClInclude Include="..\..\ademco_version.h" />
<ClInclude Include="..\..\hb_config.h" />
<ClInclude Include="..\..\hb_core.h" />
<ClInclude Include="..\..\hb_core_ademco.h" />
<ClInclude Include="..\..\hb_rf.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
......
......@@ -15,7 +15,7 @@
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="dllmain.cpp">
<ClCompile Include="dllmain.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\ademco.c">
......@@ -24,6 +24,12 @@
<ClCompile Include="..\..\hb_core.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\hb_core_ademco.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\hb_rf.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\ademco.h">
......@@ -32,5 +38,20 @@
<ClInclude Include="..\..\hb_core.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\ademco_config.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\ademco_version.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\hb_config.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\hb_core_ademco.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\hb_rf.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>
\ No newline at end of file
// dllmain.cpp : Defines the entry point for the DLL application.
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
// Windows Header Files
#include <windows.h>
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
// dllmain.cpp : Defines the entry point for the DLL application.
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
// Windows Header Files
#include <windows.h>
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
This diff is collapsed.
......@@ -21,6 +21,8 @@
<ItemGroup>
<ClCompile Include="..\..\ademco.c" />
<ClCompile Include="..\..\hb_core.c" />
<ClCompile Include="..\..\hb_core_ademco.c" />
<ClCompile Include="..\..\hb_rf.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\ademco.h" />
......@@ -94,7 +96,7 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;ADEMCO_EXPORTS;HB_EXPORTS;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
......@@ -112,7 +114,7 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;ADEMCO_EXPORTS;HB_EXPORTS;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
......@@ -130,7 +132,7 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;ADEMCO_EXPORTS;HB_EXPORTS;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
......@@ -148,7 +150,7 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;ADEMCO_EXPORTS;HB_EXPORTS;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
......
......@@ -21,6 +21,12 @@
<ClCompile Include="..\..\hb_core.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\hb_core_ademco.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\hb_rf.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\ademco.h">
......
......@@ -21,6 +21,8 @@
<ItemGroup>
<ClCompile Include="..\..\ademco.c" />
<ClCompile Include="..\..\hb_core.c" />
<ClCompile Include="..\..\hb_core_ademco.c" />
<ClCompile Include="..\..\hb_rf.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\ademco.h" />
......@@ -94,7 +96,7 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;ADEMCO_EXPORTS;HB_EXPORTS;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
......@@ -113,7 +115,7 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;ADEMCO_EXPORTS;HB_EXPORTS;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
......@@ -132,7 +134,7 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;ADEMCO_EXPORTS;HB_EXPORTS;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
......@@ -151,7 +153,7 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;ADEMCO_ENABLE_CHINESE;ADEMCO_EXPORTS;HB_EXPORTS;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
......
......@@ -21,6 +21,12 @@
<ClCompile Include="..\..\hb_core.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\hb_core_ademco.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\hb_rf.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\ademco.h">
......
#include "../../ademco.h"
#include "../../hb_core.h"
#include "../../hb_core_ademco.h"
#include <jlib/win32/UnicodeTool.h>
#include <jlib/win32/path_op.h>
#include <jlib/util/std_util.h>
#include <map>
#ifdef _WIN64
#ifdef _DEBUG
#pragma comment(lib, "../x64/Debug/ademco.lib")
......
This diff is collapsed.
......@@ -153,6 +153,8 @@
<ItemGroup>
<ClCompile Include="..\..\ademco.c" />
<ClCompile Include="..\..\hb_core.c" />
<ClCompile Include="..\..\hb_core_ademco.c" />
<ClCompile Include="..\..\hb_rf.c" />
<ClCompile Include="cJSON\cJSON.c" />
<ClCompile Include="httprelay.c" />
<ClCompile Include="uvlib\llhttp\src\api.c" />
......@@ -169,6 +171,8 @@
<ItemGroup>
<ClInclude Include="..\..\ademco.h" />
<ClInclude Include="..\..\hb_core.h" />
<ClInclude Include="..\..\hb_core_ademco.h" />
<ClInclude Include="..\..\hb_rf.h" />
<ClInclude Include="cJSON\cJSON.h" />
<ClInclude Include="uvlib\list.h" />
<ClInclude Include="uvlib\mybuf.h" />
......
......@@ -69,6 +69,12 @@
<ClCompile Include="..\..\hb_core.c">
<Filter>ademco</Filter>
</ClCompile>
<ClCompile Include="..\..\hb_core_ademco.c">
<Filter>ademco</Filter>
</ClCompile>
<ClCompile Include="..\..\hb_rf.c">
<Filter>ademco</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\ademco.h">
......@@ -107,5 +113,11 @@
<ClInclude Include="..\..\hb_core.h">
<Filter>ademco</Filter>
</ClInclude>
<ClInclude Include="..\..\hb_core_ademco.h">
<Filter>ademco</Filter>
</ClInclude>
<ClInclude Include="..\..\hb_rf.h">
<Filter>ademco</Filter>
</ClInclude>
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -164,7 +164,7 @@ int main(int argc, char** argv) {
case AID_ADM_CID:
{
clientAcct = pkt.acct;
clientAdemcoId = pkt.data.ademco_id;
clientAdemcoId = pkt.dat.ademco_id;
// handle event
// reply ack
......
#ifndef __HB_CONFIG_H__
#define __HB_CONFIG_H__
#ifdef HB_EXPORTS
#if defined __GNUC__
#define HB_EXPORT_SYMBOL __attribute__((visibility("default")))
#elif defined(_MSC_VER)
#define HB_EXPORT_SYMBOL __declspec(dllexport)
#else
#define HB_EXPORT_SYMBOL
#endif
#else // HB_EXPORTS
#define HB_EXPORT_SYMBOL
#endif
#ifndef HB_ENABLE_TO_STRING
#ifdef ADEMCO_ENABLE_TO_STRING
#define HB_ENABLE_TO_STRING ADEMCO_ENABLE_TO_STRING
#else
#define HB_ENABLE_TO_STRING 1
#endif
#endif // HB_ENABLE_TO_STRING
#if HB_ENABLE_TO_STRING
#ifndef HB_ENABLE_CHINESE
#ifdef ADEMCO_ENABLE_CHINESE
#define HB_ENABLE_CHINESE ADEMCO_ENABLE_CHINESE
#else
#define HB_ENABLE_CHINESE 1
#endif
#endif
#else // HB_ENABLE_TO_STRING
#undef HB_ENABLE_CHINESE
#define HB_ENABLE_CHINESE 0
#endif // HB_ENABLE_TO_STRING
#endif
This diff is collapsed.
#ifndef __HB_CORE_H__
#define __HB_CORE_H__
#pragma once
#include <stdint.h>
#include "ademco.h"
#include "hb_config.h"
#ifdef __cplusplus
extern "C" {
......@@ -40,7 +40,7 @@ typedef enum hb_machine_status_t {
// valid count
HMS_COUNT = 4,
// invalid
HMS_INVALID = -1,
HMS_INVALID = 0xFF,
} hb_machine_status_t;
// 主机类型表
......@@ -82,12 +82,12 @@ typedef enum hb_machine_type_t {
// valid count
HMT_COUNT = 13,
// invalid
HMT_INVALID = -1,
HMT_INVALID = 0xFF,
} hb_machine_type_t;
// 防区属性表
#define HB_ZONE_PROPERTY_MAP(XX) \
XX(BUGLAR, 0, "匪警全局") \
XX(BURGLAR, 0, "匪警全局") \
XX(EMERGENCY, 1, "匪警紧急") \
XX(FIRE, 2, "火警防区") \
XX(DURESS, 3, "胁迫防区") \
......@@ -95,22 +95,11 @@ typedef enum hb_machine_type_t {
XX(WATER, 5, "淹水防区") \
XX(SUB_MACHINE, 6, "分机") \
XX(REMOTE_CONTROL, 7, "遥控器") \
XX(BUGLAR_HALF, 8, "匪警半局") \
XX(BURGLAR_HALF, 8, "匪警半局") \
XX(SHIELD, 9, "屏蔽防区") \
XX(DOOR_RING, 0x0A, "门铃防区") \
XX(BYPASS, 0x0F, "旁路防区")
// 防区属性与安定宝事件码对照表
#define HZP_EVENT_MAP(XX) \
XX(HZP_BUGLAR, EVENT_BURGLAR) \
XX(HZP_BUGLAR_HALF, EVENT_BURGLAR) \
XX(HZP_EMERGENCY, EVENT_EMERGENCY) \
XX(HZP_FIRE, EVENT_FIRE) \
XX(HZP_DURESS, EVENT_DURESS) \
XX(HZP_GAS, EVENT_GAS) \
XX(HZP_WATER, EVENT_WATER) \
XX(HZP_DOOR_RING, EVENT_DOOR_RING)
// 防区属性
typedef enum hb_zone_property_t {
#define XX(name, value, str) HZP_##name = value,
......@@ -120,14 +109,15 @@ typedef enum hb_zone_property_t {
// valid count
HZP_COUNT = 12,
// invalid
HZP_INVALID = -1,
HZP_INVALID = 0xFF,
} hb_zone_property_t;
typedef struct {
ademco_zone_t zone;
uint16_t zone;
hb_zone_property_t prop;
} hb_zone_and_property_t;
// UTC time, its user's responsibility to convert to local time
typedef struct {
uint8_t hour;
uint8_t minute;
......@@ -140,146 +130,125 @@ typedef struct {
typedef union {
hb_machine_timer_one_t timer[2]; // 2 set of timer
uint8_t data[8];
uint8_t dat[8];
} hb_machine_timer_t;
///////////////////////////// property functions //////////////////////////////
// return available count
// props must have at least HZP_COUNT items
ADEMCO_EXPORT_SYMBOL
size_t hb_get_available_zone_properties_by_type(hb_machine_type_t type,
hb_zone_property_t props[HZP_COUNT]);
HB_EXPORT_SYMBOL
uint8_t hb_get_available_zone_properties_by_type(hb_machine_type_t type,
hb_zone_property_t props[HZP_COUNT]);
// 最大防区号根据型号不同而不同
ADEMCO_EXPORT_SYMBOL
ademco_zone_t hb_get_max_zone_by_type(hb_machine_type_t type);
HB_EXPORT_SYMBOL
uint16_t hb_get_max_zone_by_type(hb_machine_type_t type);
// 防区号是否合法(可以包含0防区)
ADEMCO_EXPORT_SYMBOL
int hb_is_valid_zone_by_type(hb_machine_type_t type, ademco_zone_t zone);
HB_EXPORT_SYMBOL
uint8_t hb_is_valid_zone_by_type(hb_machine_type_t type, uint16_t zone);
// 防区号是否合法(不可以可以包含0防区)
ADEMCO_EXPORT_SYMBOL
int hb_is_valid_zone_by_type_strict(hb_machine_type_t type, ademco_zone_t zone);
HB_EXPORT_SYMBOL
uint8_t hb_is_valid_zone_by_type_strict(hb_machine_type_t type, uint16_t zone);
// 主机是否已投产使用
ADEMCO_EXPORT_SYMBOL
int hb_is_machine_on_sale(hb_machine_type_t type);
HB_EXPORT_SYMBOL
uint8_t hb_is_machine_on_sale(hb_machine_type_t type);
// 主机是否具有离家布防功能
ADEMCO_EXPORT_SYMBOL
int hb_machine_can_arm_away(hb_machine_type_t type);
HB_EXPORT_SYMBOL
uint8_t hb_machine_can_arm_away(hb_machine_type_t type);
// 主机是否具有撤防功能
ADEMCO_EXPORT_SYMBOL
int hb_machine_can_disarm(hb_machine_type_t type);
HB_EXPORT_SYMBOL
uint8_t hb_machine_can_disarm(hb_machine_type_t type);
// 主机是否可以进入设置状态
ADEMCO_EXPORT_SYMBOL
int hb_machine_can_config(hb_machine_type_t type);
HB_EXPORT_SYMBOL
uint8_t hb_machine_can_config(hb_machine_type_t type);
// 主机是否具有留守布防功能
ADEMCO_EXPORT_SYMBOL
int hb_machine_can_arm_stay(hb_machine_type_t type);
HB_EXPORT_SYMBOL
uint8_t hb_machine_can_arm_stay(hb_machine_type_t type);
// 主机是否可以报告信号强度
ADEMCO_EXPORT_SYMBOL
int hb_machine_can_report_signal_strength(hb_machine_type_t type);
HB_EXPORT_SYMBOL
uint8_t hb_machine_can_report_signal_strength(hb_machine_type_t type);
// 主机本身是否可以短信报警(不算通过服务如阿里语音等)
ADEMCO_EXPORT_SYMBOL
int hb_machine_can_report_by_sms(hb_machine_type_t type);
HB_EXPORT_SYMBOL
uint8_t hb_machine_can_report_by_sms(hb_machine_type_t type);
// 主机是否支持有线防区
ADEMCO_EXPORT_SYMBOL
int hb_machine_has_wired_zones(hb_machine_type_t type);
HB_EXPORT_SYMBOL
uint8_t hb_machine_has_wired_zones(hb_machine_type_t type);
// 主机最小有线防区号
ADEMCO_EXPORT_SYMBOL
ademco_zone_t hb_wired_zone_min(hb_machine_type_t type);
HB_EXPORT_SYMBOL
uint16_t hb_wired_zone_min(hb_machine_type_t type);
// 主机最大有线防区号
ADEMCO_EXPORT_SYMBOL
ademco_zone_t hb_wired_zone_max(hb_machine_type_t type);
HB_EXPORT_SYMBOL
uint16_t hb_wired_zone_max(hb_machine_type_t type);
// 主机是否可以直接写入防区数据(无需对码)
ADEMCO_EXPORT_SYMBOL
int hb_machine_can_write_zone(hb_machine_type_t type);
HB_EXPORT_SYMBOL
uint8_t hb_machine_can_write_zone(hb_machine_type_t type);
// 主机是否可以挂载分机
ADEMCO_EXPORT_SYMBOL
int hb_machine_can_link_sub_machine(hb_machine_type_t type);
HB_EXPORT_SYMBOL
uint8_t hb_machine_can_link_sub_machine(hb_machine_type_t type);
// 根据防区属性判断是否支持失联报告
// 失联报告是主机侧实现的跟防区属性没关系,但是人为限制了只有以下属性的才可以设置
ADEMCO_EXPORT_SYMBOL
int hb_zone_can_report_lost(hb_zone_property_t zp);
HB_EXPORT_SYMBOL
uint8_t hb_zone_can_report_lost(hb_zone_property_t zp);
///////////////////////////// timer functions /////////////////////////////////
ADEMCO_EXPORT_SYMBOL
void hb_machine_timer_init(hb_machine_timer_t* timer);
ADEMCO_EXPORT_SYMBOL
int hb_is_valid_time_point(hb_machine_time_point_t* tp);
ADEMCO_EXPORT_SYMBOL
void hb_time_point_to_greenwich(hb_machine_time_point_t* tp);
HB_EXPORT_SYMBOL
void hb_machine_timer_one_init(hb_machine_timer_one_t* timer);
ADEMCO_EXPORT_SYMBOL
void hb_time_point_from_greenwich(hb_machine_time_point_t* tp);
HB_EXPORT_SYMBOL
void hb_machine_timer_init(hb_machine_timer_t* timer);
ADEMCO_EXPORT_SYMBOL
int hb_is_valid_timer_one(hb_machine_timer_one_t* timer);
HB_EXPORT_SYMBOL
uint8_t hb_is_valid_time_point(hb_machine_time_point_t* tp);
ADEMCO_EXPORT_SYMBOL
int hb_is_valid_machine_timer(hb_machine_timer_t* timer);
HB_EXPORT_SYMBOL
uint8_t hb_time_point_equal(hb_machine_time_point_t* tp1, hb_machine_time_point_t* tp2);
// 传输的是格林威治时间
ADEMCO_EXPORT_SYMBOL
void hb_machine_timer_to_greenwich(hb_machine_timer_t* timer);
HB_EXPORT_SYMBOL
uint8_t hb_is_valid_timer_one(hb_machine_timer_one_t* timer);
ADEMCO_EXPORT_SYMBOL
void hb_machine_timer_from_greenwich(hb_machine_timer_t* timer);
HB_EXPORT_SYMBOL
uint8_t hb_is_valid_machine_timer(hb_machine_timer_t* timer);
///////////////////////////// helper functions ////////////////////////////////
ADEMCO_EXPORT_SYMBOL
ademco_event_t hb_machine_status_to_ademco_event(hb_machine_status_t status);
ADEMCO_EXPORT_SYMBOL
hb_machine_status_t hb_machine_status_from_ademco_event(ademco_event_t ademco_event);
ADEMCO_EXPORT_SYMBOL
ademco_event_t hb_machine_type_to_ademco_event(hb_machine_type_t type);
ADEMCO_EXPORT_SYMBOL
hb_machine_type_t hb_machine_type_from_ademco_event(ademco_event_t ademco_event);
ADEMCO_EXPORT_SYMBOL
ademco_event_t hb_zone_property_to_ademco_event(hb_zone_property_t zp);
ADEMCO_EXPORT_SYMBOL
HB_EXPORT_SYMBOL
const char* hb_machine_status_to_string(hb_machine_status_t status);
ADEMCO_EXPORT_SYMBOL
HB_EXPORT_SYMBOL
const char* hb_machine_type_to_string(hb_machine_type_t type);
ADEMCO_EXPORT_SYMBOL
HB_EXPORT_SYMBOL
const char* hb_zone_property_to_string(hb_zone_property_t zp);
#if ADEMCO_ENABLE_CHINESE
ADEMCO_EXPORT_SYMBOL
#if HB_ENABLE_CHINESE
HB_EXPORT_SYMBOL
const char* hb_machine_status_to_string_chinese(hb_machine_status_t status);
ADEMCO_EXPORT_SYMBOL
HB_EXPORT_SYMBOL
const char* hb_machine_type_to_string_chinese(hb_machine_type_t type);
ADEMCO_EXPORT_SYMBOL
HB_EXPORT_SYMBOL
const char* hb_zone_property_to_string_chinese(hb_zone_property_t zp);
#endif // ADEMCO_ENABLE_CHINESE
#endif // HB_ENABLE_CHINESE
ADEMCO_EXPORT_SYMBOL
HB_EXPORT_SYMBOL
const char* hb_get_zone_format_str(hb_machine_type_t type);
#ifdef __cplusplus
......
#include "hb_core_ademco.h"
ademco_event_t hb_machine_status_to_ademco_event(hb_machine_status_t status) {
switch (status) {
#define XX(hms, ae) \
case hms: \
return ae;
HMS_EVENT_MAP(XX)
#undef XX
default:
return EVENT_INVALID_EVENT;
}
}
hb_machine_status_t hb_machine_status_from_ademco_event(ademco_event_t ademco_event) {
switch (ademco_event) {
#define XX(hms, ae) \
case ae: \
return hms;
HMS_EVENT_MAP(XX)
#undef XX
case EVENT_ARM_STAY_1456:
return HMS_ARM_STAY;
case EVENT_ENTER_SET_MODE:
return HMS_SETTING;
default:
return HMS_INVALID;
}
}
ademco_event_t hb_machine_type_to_ademco_event(hb_machine_type_t type) {
switch (type) {
#define XX(hmt, ae) \
case hmt: \
return ae;
HMT_EVENT_MAP(XX)
#undef XX
default:
return EVENT_INVALID_EVENT;
}
}
hb_machine_type_t hb_machine_type_from_ademco_event(ademco_event_t ademco_event) {
switch (ademco_event) {
#define XX(hmt, ae) \
case ae: \
return hmt;
HMT_EVENT_MAP(XX)
#undef XX
default:
return HMT_INVALID;
}
}
ademco_event_t hb_zone_property_to_ademco_event(hb_zone_property_t zp) {
switch (zp) {
#define XX(hzp, ae) \
case hzp: \
return ae;
HZP_EVENT_MAP(XX)
#undef XX
default:
return EVENT_INVALID_EVENT;
}
}
ademco_event_t hb_rf_code_to_ademco_event(uint8_t rf_code) {
switch (rf_code) {
case HB_RF_CODE_ARM:
return EVENT_ARM_AWAY;
case HB_RF_CODE_DISARM:
return EVENT_DISARM;
case HB_RF_CODE_ARM_STAY_OR_CLEAR_ALARM:
return EVENT_ARM_STAY;
case HB_RF_CODE_EMERGENCY:
return EVENT_EMERGENCY;
case HB_RF_CODE_BURGLAR:
return EVENT_BURGLAR;
case HB_RF_CODE_FIRE:
return EVENT_FIRE;
case HB_RF_CODE_DURESS:
return EVENT_DURESS;
case HB_RF_CODE_GAS:
return EVENT_GAS;
case HB_RF_CODE_WATER:
return EVENT_WATER;
case HB_RF_CODE_TAMPER:
return EVENT_TAMPER;
case HB_RF_CODE_S_BATTERY_LOW:
case HB_RF_CODE_R_BATTERY_LOW:
return EVENT_LOW_BATTERY;
case HB_RF_CODE_S_BATTERY_BROKE:
case HB_RF_CODE_R_BATTERY_BROKE:
return EVENT_BAD_BATTERY;
case HB_RF_CODE_BATTERY_RECOVER:
return EVENT_LOW_BATTERY_RECOVER;
case HB_RF_CODE_SOLAR_DISTURB:
return EVENT_SOLAR_DISTURB;
case HB_RF_CODE_SOLAR_RECOVER:
return EVENT_SOLAR_DISTURB_RECOVER;
case HB_RF_CODE_LONGTIME_DISCONN:
return EVENT_DISCONNECT;
case HB_RF_CODE_LONGTIME_RECOVER:
return EVENT_DISCONNECT_RECOVER;
case HB_RF_CODE_DOOR_RING:
return EVENT_DOOR_RING;
case HB_RF_CODE_SM_EXCEPTION:
return EVENT_SUB_MACHINE_SENSOR_EXCEPTION;
case HB_RF_CODE_SM_EXCEPT_RECOVER:
return EVENT_SUB_MACHINE_SENSOR_RECOVER;
case HB_RF_CODE_SM_POWER_EXCEPT:
return EVENT_SUB_MACHINE_POWER_EXCEPTION;
case HB_RF_CODE_SM_POWER_RECOVER:
return EVENT_SUB_MACHINE_POWER_RECOVER;
case HB_RF_CODE_AC_BROKE:
return EVENT_AC_BROKE;
case HB_RF_CODE_AC_RECOVER:
return EVENT_AC_RECOVER;
case HB_RF_CODE_STARTUP:
case HB_RF_CODE_SHUTDOWN:
case HB_RF_CODE_SENDER_REBOOT:
default:
return EVENT_INVALID_EVENT;
}
}
#ifndef __HB_CORE_ADEMCO_H__
#define __HB_CORE_ADEMCO_H__
#include "ademco.h"
#include "hb_core.h"
#include "hb_rf.h"
#ifdef __cplusplus
extern "C" {
#endif
// 防区属性与安定宝事件码对照表
#define HZP_EVENT_MAP(XX) \
XX(HZP_BURGLAR, EVENT_BURGLAR) \
XX(HZP_BURGLAR_HALF, EVENT_BURGLAR) \
XX(HZP_EMERGENCY, EVENT_EMERGENCY) \
XX(HZP_FIRE, EVENT_FIRE) \
XX(HZP_DURESS, EVENT_DURESS) \
XX(HZP_GAS, EVENT_GAS) \
XX(HZP_WATER, EVENT_WATER) \
XX(HZP_DOOR_RING, EVENT_DOOR_RING)
HB_EXPORT_SYMBOL
ademco_event_t hb_machine_status_to_ademco_event(hb_machine_status_t status);
HB_EXPORT_SYMBOL
hb_machine_status_t hb_machine_status_from_ademco_event(ademco_event_t ademco_event);
HB_EXPORT_SYMBOL
ademco_event_t hb_machine_type_to_ademco_event(hb_machine_type_t type);
HB_EXPORT_SYMBOL
hb_machine_type_t hb_machine_type_from_ademco_event(ademco_event_t ademco_event);
HB_EXPORT_SYMBOL
ademco_event_t hb_zone_property_to_ademco_event(hb_zone_property_t zp);
HB_EXPORT_SYMBOL
ademco_event_t hb_rf_code_to_ademco_event(uint8_t rf_code);
#ifdef __cplusplus
}
#endif
#endif /* __HB_CORE_ADEMCO_H__ */
#include "hb_rf.h"
///////////////////////////// RF functions /////////////////////////////////
hb_rf_code_t hb_rf_code_from_u8(uint8_t rf_code) {
switch (rf_code) {
#define XX(_code, name, desc) \
case _code: \
return HB_RF_CODE_##name;
HB_RF_CODE_MAP(XX)
#undef XX
default:
return HB_RF_CODE_INVALID;
}
}
const char* hb_rf_code_to_string(hb_rf_code_t rf_code) {
switch (rf_code) {
#define XX(_code, name, desc) \
case HB_RF_CODE_##name: \
return #name;
HB_RF_CODE_MAP(XX)
#undef XX
default:
return "Unkown hb_rf_code_t";
}
}
#if HB_ENABLE_CHINESE
const char* hb_rf_code_to_string_chinese(hb_rf_code_t rf_code) {
switch (rf_code) {
#define XX(_code, name, desc) \
case HB_RF_CODE_##name: \
return desc;
HB_RF_CODE_MAP(XX)
#undef XX
default:
return "未知无线码";
}
}
#endif /* HB_ENABLE_CHINESE */
#ifndef __HB_RF_H__
#define __HB_RF_H__
#include <stdint.h>
#include "hb_config.h"
#ifdef __cplusplus
extern "C" {
#endif
#define HB_RF_CODE_MAP(XX) \
XX(0x00, BURGLAR, "报警") \
XX(0x01, ARM, "布防") \
XX(0x02, DISARM, "撤防") \
XX(0x04, ARM_STAY_OR_CLEAR_ALARM, "半布防或消警") \
XX(0x08, EMERGENCY, "紧急报警") \
XX(0x20, FIRE, "火警") \
XX(0x30, DURESS, "呼救/挟持") \
XX(0x40, GAS, "煤气") \
XX(0x50, WATER, "水警") \
XX(0x57, NIGHT, "夜间") \
XX(0x69, SENDER_REBOOT, "发送端重启") \
XX(0x75, DAY, "白天") \
XX(0xA5, R_BATTERY_BROKE, "收电池损坏") \
XX(0xA8, DOOR_RING, "门铃") \
XX(0xAB, S_BATTERY_LOW, "发低电") \
XX(0xAC, R_BATTERY_LOW, "收低电") \
XX(0xAD, BATTERY_RECOVER, "复电") \
XX(0xAE, S_BATTERY_BROKE, "发电池损坏") \
XX(0xB0, AC_BROKE, "AC掉电") \
XX(0xB1, AC_RECOVER, "AC恢复") \
XX(0xBA, TAMPER, "防拆") \
XX(0xBB, SLEEP, "电池电压小于3V,终端进入休眠") \
XX(0xBC, LONGTIME_DISCONN, "长时间没有对上") \
XX(0xBD, SOLAR_DISTURB, "强光干扰") \
XX(0xBE, SM_POWER_EXCEPT, "分机产生电源异常") \
XX(0xBF, SM_POWER_RECOVER, "分机恢复电源异常") \
XX(0xCA, STARTUP, "开机") \
XX(0xCB, LONGTIME_RECOVER, "长时间已经对上") \
XX(0xCD, SOLAR_RECOVER, "强光恢复") \
XX(0xCE, SM_EXCEPTION, "分机产生异常信息") \
XX(0xCF, SM_EXCEPT_RECOVER, "分机恢复异常信息") \
XX(0xDD, QUERY, "查询分机状态") \
XX(0xED, SHUTDOWN, "关机")
// 无线命令码
typedef enum hb_rf_code_t {
#define XX(value, name, str) HB_RF_CODE_##name = value,
HB_RF_CODE_MAP(XX)
#undef XX
// 无效命令码
HB_RF_CODE_INVALID = 0xFF,
} hb_rf_code_t;
///////////////////////////// rf functions /////////////////////////////////
HB_EXPORT_SYMBOL hb_rf_code_t hb_rf_code_from_u8(uint8_t rf_code);
HB_EXPORT_SYMBOL const char* hb_rf_code_to_string(hb_rf_code_t rf_code);
#if HB_ENABLE_CHINESE
HB_EXPORT_SYMBOL const char* hb_rf_code_to_string_chinese(hb_rf_code_t rf_code);
#endif
#ifdef __cplusplus
}
#endif
#endif /* __HB_RF_H__ */
......@@ -32,10 +32,10 @@ namespace CSharpDemo
Debug.Assert(pkt.id == ademco_packet_id_t.AID_HB);
Debug.Assert(pkt.seq == 0);
Debug.Assert(pkt.acct == "90219125916578");
Debug.Assert(pkt.data.ademco_id == 0);
Debug.Assert(pkt.data.ademco_event == ademco_event_t.EVENT_I_AM_WIRE);
Debug.Assert(pkt.data.gg == 0);
Debug.Assert(pkt.data.zone == 0);
Debug.Assert(pkt.dat.ademco_id == 0);
Debug.Assert(pkt.dat.ademco_event == ademco_event_t.EVENT_I_AM_WIRE);
Debug.Assert(pkt.dat.gg == 0);
Debug.Assert(pkt.dat.zone == 0);
Console.WriteLine("res={0:D}, commited={1:D}", res, libademco.size_tp_value(cb));
}
......@@ -57,10 +57,10 @@ namespace CSharpDemo
Debug.Assert(pkt.id == ademco_packet_id_t.AID_HB);
Debug.Assert(pkt.seq == 1);
Debug.Assert(pkt.acct == "861234567890");
Debug.Assert(pkt.data.ademco_id == 666666);
Debug.Assert(pkt.data.ademco_event == ademco_event_t.EVENT_ARM_AWAY);
Debug.Assert(pkt.data.gg == 0);
Debug.Assert(pkt.data.zone == 0);
Debug.Assert(pkt.dat.ademco_id == 666666);
Debug.Assert(pkt.dat.ademco_event == ademco_event_t.EVENT_ARM_AWAY);
Debug.Assert(pkt.dat.gg == 0);
Debug.Assert(pkt.dat.zone == 0);
}
// test pack
......@@ -167,14 +167,14 @@ namespace CSharpDemo
case ademco_packet_id_t.AID_ADM_CID:
replyAck(stream, pkt.seq, pkt.acct);
acct = pkt.acct;
ademco_id = pkt.data.ademco_id;
if (libademco.ademco_is_machine_type_event(pkt.data.ademco_event) != 0)
ademco_id = pkt.dat.ademco_id;
if (libademco.ademco_is_machine_type_event(pkt.dat.ademco_event) != 0)
{
type = libademco.hb_machine_type_from_ademco_event(pkt.data.ademco_event);
type = libademco.hb_machine_type_from_ademco_event(pkt.dat.ademco_event);
}
if (libademco.ademco_is_machine_status_event(pkt.data.ademco_event) != 0)
if (libademco.ademco_is_machine_status_event(pkt.dat.ademco_event) != 0)
{
status = libademco.hb_machine_status_from_ademco_event(pkt.data.ademco_event);
status = libademco.hb_machine_status_from_ademco_event(pkt.dat.ademco_event);
}
// 演示如何进行布撤防,真实项目里可以删改本段
......
......@@ -249,10 +249,10 @@ public class JavaDemo {
case AID_HB:
case AID_ADM_CID:
acct = pkt.getAcct();
ademco_id = pkt.getData().getAdemco_id();
ademco_event_t event = pkt.getData().getAdemco_event();
ademco_id = pkt.getDat().getAdemco_id();
ademco_event_t event = pkt.getDat().getAdemco_event();
System.out.println(id() + " event=" + libademco.ademco_event_to_string(event) + " zone="
+ pkt.getData().getZone());
+ pkt.getDat().getZone());
if (libademco.ademco_is_machine_status_event(event) != 0) {
status = libademco.hb_machine_status_from_ademco_event(event);
// 演示如何进行布撤防,真实项目里可以删改本段
......
......@@ -6,6 +6,8 @@
"libademco_wrap.cxx",
"../ademco.c",
"../hb_core.c",
"../hb_core_ademco.c",
"../hb_rf.c",
],
'conditions': [
['OS=="win"', {
......
......@@ -17,7 +17,8 @@
/* Includes the header in the wrapper code */
#include "../ademco_config.h"
#include "../ademco_version.h"
#include "../hb_core.h"
#include "../hb_core_ademco.h"
#include "../hb_rf.h"
%}
#ifdef SWIGJAVA
......@@ -41,5 +42,8 @@ JAVA_ARRAYS_TYPEMAPS(uint8_t, byte, jbyte, Uint8, "[B")
%include "../ademco_config.h"
%include "../ademco_version.h"
%include "../ademco.h"
%include "../hb_config.h"
%include "../hb_core.h"
%include "../hb_core_ademco.h"
%include "../hb_rf.h"
......@@ -4,7 +4,7 @@ mkdir -p com/hb3344/ademco
swig -java -package com.hb3344.ademco -outdir com/hb3344/ademco -o libademco_java_wrap.c libademco.swig
JAVA_INCLUDE=${JAVA_HOME}/include
JAVA_INCLUDE_OS=${JAVA_INCLUDE}/linux
cc -std=c99 -fpic -c ../ademco.c ../hb_core.c libademco_java_wrap.c -I"../" -I${JAVA_INCLUDE} -I${JAVA_INCLUDE_OS}
ld -shared ademco.o hb_core.o libademco_java_wrap.o -o libademco_java.so
cc -std=c99 -fpic -c ../ademco.c ../hb_core.c ../hb_core_ademco.c ../hb_rf.c libademco_java_wrap.c -I"../" -I${JAVA_INCLUDE} -I${JAVA_INCLUDE_OS}
ld -shared ademco.o hb_core.o hb_core_ademco.o hb_rf.o libademco_java_wrap.o -o libademco_java.so
javac JavaDemo.java
# java -Djava.library.path=./ JavaDemo
\ No newline at end of file
......@@ -5,7 +5,7 @@ mkdir -p com/hb3344/ademco
/usr/local/bin/swig -java -package com.hb3344.ademco -outdir com/hb3344/ademco -o libademco_java_wrap.c libademco.swig
JAVA_INCLUDE=${JAVA_HOME}/include
JAVA_INCLUDE_OS=${JAVA_INCLUDE}/darwin
gcc -fpic -c ../ademco.c ../hb_core.c libademco_java_wrap.c -I"../" -I${JAVA_INCLUDE} -I${JAVA_INCLUDE_OS}
gcc -shared ademco.o hb_core.o libademco_java_wrap.o -o libademco_java.dylib
gcc -fpic -c ../ademco.c ../hb_core.c ../hb_core_ademco.c ../hb_rf.c libademco_java_wrap.c -I"../" -I${JAVA_INCLUDE} -I${JAVA_INCLUDE_OS}
gcc -shared ademco.o hb_core.o hb_core_ademco.o hb_rf.o libademco_java_wrap.o -o libademco_java.dylib
javac JavaDemo.java
# java -Djava.library.path=./ JavaDemo
......@@ -20,10 +20,10 @@ function test_parse() {
assert.strictEqual(pkt.id, libademco.AID_HB);
assert.strictEqual(pkt.seq, 0);
assert.strictEqual(pkt.acct, "90219125916578");
assert.strictEqual(pkt.data.ademco_id, 0);
assert.strictEqual(pkt.data.ademco_event, libademco.EVENT_I_AM_WIRE);
assert.strictEqual(pkt.data.gg, 0);
assert.strictEqual(pkt.data.zone, 0);
assert.strictEqual(pkt.dat.ademco_id, 0);
assert.strictEqual(pkt.dat.ademco_event, libademco.EVENT_I_AM_WIRE);
assert.strictEqual(pkt.dat.gg, 0);
assert.strictEqual(pkt.dat.zone, 0);
console.log("res=%d, commited=%d", res, libademco.size_tp_value(cb));
}
......@@ -43,10 +43,10 @@ function test_pack() {
assert.strictEqual(pkt2.id, libademco.AID_HB);
assert.strictEqual(pkt2.seq, 1);
assert.strictEqual(pkt2.acct, "861234567890");
assert.strictEqual(pkt2.data.ademco_id, 666666);
assert.strictEqual(pkt2.data.ademco_event, libademco.EVENT_ARM_AWAY);
assert.strictEqual(pkt2.data.gg, 0);
assert.strictEqual(pkt2.data.zone, 0);
assert.strictEqual(pkt2.dat.ademco_id, 666666);
assert.strictEqual(pkt2.dat.ademco_event, libademco.EVENT_ARM_AWAY);
assert.strictEqual(pkt2.dat.gg, 0);
assert.strictEqual(pkt2.dat.zone, 0);
}
class AlarmHost {
......
mkdir com\hb3344\ademco
"E:\local_program\swig\swigwin-4.1.1\swig.exe" -csharp -namespace com.hb3344.ademco -outdir com/hb3344/ademco -o libademco_csharp_wrap.c libademco.swig
cl -c ../ademco.c ../hb_core.c libademco_csharp_wrap.c -I"../" /source-charset:utf-8
cl -LD ademco.obj hb_core.obj libademco_csharp_wrap.obj -o libademco.dll
cl -c ../ademco.c ../hb_core.c ../hb_core_ademco.c ../hb_rf.c libademco_csharp_wrap.c -I"../" /source-charset:utf-8
cl -LD ademco.obj hb_core.obj hb_core_ademco.obj hb_rf.obj libademco_csharp_wrap.obj -o libademco.dll
csc CSharpDemo.cs -recurse:com/hb3344/ademco/*.cs
rem CSharpDemo.exe
mkdir com\hb3344\ademco
"E:\local_program\swig\swigwin-4.1.1\swig.exe" -java -package com.hb3344.ademco -outdir com/hb3344/ademco -o libademco_java_wrap.c libademco.swig
cl -c ../ademco.c ../hb_core.c libademco_java_wrap.c -I"../" -I"%JAVA_HOME%include" -I"%JAVA_HOME%include/win32" /source-charset:utf-8
cl -LD ademco.obj hb_core.obj libademco_java_wrap.obj -o ademco_java.dll
cl -c ../ademco.c ../hb_core.c ../hb_core_ademco.c ../hb_rf.c libademco_java_wrap.c -I"../" -I"%JAVA_HOME%include" -I"%JAVA_HOME%include/win32" /source-charset:utf-8
cl -LD ademco.obj hb_core.obj hb_core_ademco.obj hb_rf.obj libademco_java_wrap.obj -o ademco_java.dll
javac -encoding utf-8 JavaDemo.java
rem java JavaDemo
......@@ -9,9 +9,14 @@ repo=/h/dev_hb/libhb/libhb
cp -f ${repo}/ademco.h ../
cp -f ${repo}/ademco.c ../
cp -f ${repo}/hb_core.h ../
cp -f ${repo}/hb_core.c ../
cp -f ${repo}/ademco_version.h ../
cp -f ${repo}/ademco_config.h ../
cp -f ${repo}/hb_config.h ../
cp -f ${repo}/hb_core.h ../
cp -f ${repo}/hb_core.c ../
cp -f ${repo}/hb_core_ademco.h ../
cp -f ${repo}/hb_core_ademco.c ../
cp -f ${repo}/hb_rf.c ../
cp -f ${repo}/hb_rf.h ../
cp -f ${repo}/CHANGELOG.md ../
sed -i '/\[hb\]/d' ../CHANGELOG.md
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