├── images
├── .gitkeep
├── reed.jpg
├── cacazi-a8.jpg
├── ywtetx8fium.jpg
├── img_20200619_153949.jpg
├── cacazi-a8-zigbee_scheme.jpg
└── img_20200619_153949-700x525.jpg
├── CC2530DB
├── settings
│ └── GenericApp.reggroups
├── GenericApp.eww
└── GenericApp.ewp
├── firmwares
└── README.md
├── Source
├── version.h
├── stdint.h
├── OSAL_App.c
├── preinclude.h
├── zcl_app.h
├── zcl_app.c
├── zcl_app_data.c
├── f8wConfig.cfg
└── hal_board_cfg.h
├── hardware
├── cacazi-a8-zigbee_1.2mm.lay6
├── cacazi-a8-zigbee_1.2mm_gerber.zip
├── cacazi-a8-zigbee_cr2032_1.2mm.lay6
└── cacazi-a8-zigbee_cr2032_1.2mm_gerber.zip
├── .release-it.yml
├── .clang-format
├── .gitmodules
├── ver.py
├── .gitignore
├── .vscode
└── c_cpp_properties.json
├── z2m-converter
└── DIYRuZ_Reed.js
├── README.md
└── LICENSE
/images/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/reed.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xyzroe/reed/master/images/reed.jpg
--------------------------------------------------------------------------------
/CC2530DB/settings/GenericApp.reggroups:
--------------------------------------------------------------------------------
1 | group = "io", "P0"
2 | group = "Unnamed2", "P1"
3 |
--------------------------------------------------------------------------------
/firmwares/README.md:
--------------------------------------------------------------------------------
1 | Downalod from github [releases](https://github.com/diyruz/reed/releases)
--------------------------------------------------------------------------------
/images/cacazi-a8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xyzroe/reed/master/images/cacazi-a8.jpg
--------------------------------------------------------------------------------
/images/ywtetx8fium.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xyzroe/reed/master/images/ywtetx8fium.jpg
--------------------------------------------------------------------------------
/Source/version.h:
--------------------------------------------------------------------------------
1 | extern const uint8 zclApp_DateCode[];
2 | extern const char zclApp_DateCodeNT[];
--------------------------------------------------------------------------------
/images/img_20200619_153949.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xyzroe/reed/master/images/img_20200619_153949.jpg
--------------------------------------------------------------------------------
/images/cacazi-a8-zigbee_scheme.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xyzroe/reed/master/images/cacazi-a8-zigbee_scheme.jpg
--------------------------------------------------------------------------------
/hardware/cacazi-a8-zigbee_1.2mm.lay6:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xyzroe/reed/master/hardware/cacazi-a8-zigbee_1.2mm.lay6
--------------------------------------------------------------------------------
/images/img_20200619_153949-700x525.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xyzroe/reed/master/images/img_20200619_153949-700x525.jpg
--------------------------------------------------------------------------------
/hardware/cacazi-a8-zigbee_1.2mm_gerber.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xyzroe/reed/master/hardware/cacazi-a8-zigbee_1.2mm_gerber.zip
--------------------------------------------------------------------------------
/hardware/cacazi-a8-zigbee_cr2032_1.2mm.lay6:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xyzroe/reed/master/hardware/cacazi-a8-zigbee_cr2032_1.2mm.lay6
--------------------------------------------------------------------------------
/.release-it.yml:
--------------------------------------------------------------------------------
1 | git:
2 | requireCleanWorkingDir: false
3 | github:
4 | release: true
5 | assets: ["firmwares/DIYRuZ_*.hex"]
6 | draft: false
--------------------------------------------------------------------------------
/hardware/cacazi-a8-zigbee_cr2032_1.2mm_gerber.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xyzroe/reed/master/hardware/cacazi-a8-zigbee_cr2032_1.2mm_gerber.zip
--------------------------------------------------------------------------------
/.clang-format:
--------------------------------------------------------------------------------
1 | ---
2 | # We'll use defaults from the LLVM style, but with 4 columns indentation.
3 | BasedOnStyle: LLVM
4 | IndentWidth: 4
5 | ColumnLimit: 140
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "BME280_driver"]
2 | path = BME280_driver
3 | url = git@github.com:BoschSensortec/BME280_driver.git
4 | ignore = dirty
5 | [submodule "zstack-lib"]
6 | path = zstack-lib
7 | url = git@github.com:diyruz/zstack-lib.git
8 |
--------------------------------------------------------------------------------
/CC2530DB/GenericApp.eww:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | $WS_DIR$\GenericApp.ewp
5 |
6 |
7 |
8 | ALL
9 |
10 | GenericApp
11 | DIYRuZ_Reed
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/Source/stdint.h:
--------------------------------------------------------------------------------
1 |
2 | #ifndef _STDINT
3 | #define _STDINT
4 |
5 | #ifndef int8_t
6 | #define int8_t int8
7 | #endif
8 | #ifndef int16_t
9 | #define int16_t int16
10 | #endif
11 | #ifndef int32_t
12 | #define int32_t int32
13 | #endif
14 | #ifndef int64_t
15 | #define int64_t int64
16 | #endif
17 | #ifndef uint8_t
18 | #define uint8_t uint8
19 | #endif
20 | #ifndef uint16_t
21 | #define uint16_t uint16
22 | #endif
23 | #ifndef uint32_t
24 | #define uint32_t uint32
25 | #endif
26 |
27 |
28 | #define S8_C(x) x
29 | #define U8_C(x) x
30 | #define S16_C(x) x
31 | #define U16_C(x) x
32 | #define S32_C(x) x
33 | #define U32_C(x) x
34 | #define S64_C(x) x
35 | #define U64_C(x) x
36 |
37 | #endif
38 |
--------------------------------------------------------------------------------
/ver.py:
--------------------------------------------------------------------------------
1 | from datetime import datetime
2 | from os.path import dirname, join
3 | cwd = dirname(__file__)
4 | now = datetime.now()
5 | dt_string = now.strftime("%d/%m/%Y %H:%M")
6 | print("date and time =", dt_string)
7 | with open(join(cwd, './Source/version.c'), 'w') as f:
8 | chars = ["'{0}'".format(char) for char in dt_string]
9 | f.write("""
10 | #ifndef ZCL_APP_VERSION_H
11 | #define ZCL_APP_VERSION_H
12 |
13 | #ifdef __cplusplus
14 | extern "C" {
15 | #endif
16 |
17 | """
18 | )
19 | f.write('#include "version.h"\n')
20 | code = """const uint8 zclApp_DateCode[] = {{ {0}, {1} }};\n""".format(len(chars), ', '.join(chars))
21 | f.write(code)
22 | code = """const char zclApp_DateCodeNT[] = \"{0}\";\n""".format(dt_string)
23 | f.write(code)
24 | f.write("""
25 | #ifdef __cplusplus
26 | }
27 | #endif
28 |
29 | #endif /* ZCL_APP_VERSION_H */
30 | """)
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # IAR C-STAT and C-RUN
2 | # Comment this out if you use C-Stat or C-Run to compile/analyze your project
3 | *.ewt
4 |
5 | # IAR Debugger files
6 | *.ewd
7 |
8 |
9 | # IAR Settings
10 | **/settings/*.crun
11 | **/settings/*.dbgdt
12 | **/settings/*.cspy
13 | **/settings/*.cspy.*
14 | **/settings/*.xcl
15 | **/settings/*.dni
16 | **/settings/*.wsdt
17 | **/settings/*.wspos
18 | **/settings/*.dnx
19 |
20 | # IAR Debug Exe
21 | **/CoordinatorEB/Exe/
22 |
23 | # IAR Debug List
24 | **/CoordinatorEB/List
25 |
26 | # IAR Debug Obj
27 | **/CoordinatorEB/Obj/*.pbd
28 | **/CoordinatorEB/Obj/*.pbd.*
29 | **/CoordinatorEB/Obj/*.pbi
30 | **/CoordinatorEB/Obj/*.pbi.*
31 | **/CoordinatorEB/Obj/*.r51
32 |
33 | # Log files
34 | **.log
35 |
36 | # IAR backup files
37 | Backup*
38 |
39 | # IAR .dep files
40 | *.dep
41 |
42 | # Compiled Binaries
43 | *.bin
44 | *.elf
45 | *.map
46 |
47 | # Trash files
48 | *.bak
49 |
50 | # CC2530DB
51 |
52 | CC2530DB/CHDTECH_DEV
53 | CC2530DB/FREEPAD*
54 | CC2530DB/flower
55 | CC2530DB/DIYRuZ_*
56 | Source/version.c
57 | !.vscode/
58 | .vscode/settings.json
59 | firmwares/*.hex
--------------------------------------------------------------------------------
/.vscode/c_cpp_properties.json:
--------------------------------------------------------------------------------
1 | {
2 | "configurations": [{
3 | "name": "Mac",
4 | "forcedInclude": ["${workspaceRoot}/Source/preinclude.h"],
5 | "defines": ["HAL_BOARD_TARGET"],
6 | "includePath": [
7 | "${workspaceRoot}",
8 | "${workspaceRoot}/zstack-lib",
9 | "${env:ZSTACK_PATH}/Components/mac/include/",
10 | "${env:ZSTACK_PATH}/Components/mt",
11 | "${env:ZSTACK_PATH}/Components/zmac",
12 | "${env:ZSTACK_PATH}/Components/zmac/f8w",
13 | "${env:ZSTACK_PATH}/Components/osal/include",
14 | "${env:ZSTACK_PATH}/Components/stack/af",
15 | "${env:ZSTACK_PATH}/Components/stack/bdb",
16 | "${env:ZSTACK_PATH}/Components/stack/sec",
17 | "${env:ZSTACK_PATH}/Components/stack/sys",
18 | "${env:ZSTACK_PATH}/Components/stack/zdo",
19 | "${env:ZSTACK_PATH}/Components/stack/GP",
20 | "${env:ZSTACK_PATH}/Components/stack/nwk",
21 | "${env:ZSTACK_PATH}/Components/stack/zcl",
22 | "${env:ZSTACK_PATH}/Components/hal/target/CC2530EB/",
23 | "${env:ZSTACK_PATH}/Components/hal/include/",
24 | "${env:ZSTACK_PATH}/Components/services/saddr/",
25 | "${env:ZSTACK_PATH}/Components/services/sdata/",
26 | "${env:ZSTACK_PATH}/Projects/zstack/ZMain/TI2530DB",
27 | "${env:ZSTACK_PATH}/Projects/zstack/HomeAutomation/Source"
28 | ],
29 | "intelliSenseMode": "clang-x64",
30 | "compilerPath": "/usr/bin/clang",
31 | "cStandard": "c99",
32 | "cppStandard": "c++17"
33 | }],
34 | "version": 4
35 | }
--------------------------------------------------------------------------------
/z2m-converter/DIYRuZ_Reed.js:
--------------------------------------------------------------------------------
1 | const {
2 | fromZigbeeConverters
3 | } = require('zigbee-herdsman-converters');
4 |
5 |
6 | const bind = async (endpoint, target, clusters) => {
7 | for (const cluster of clusters) {
8 | await endpoint.bind(cluster, target);
9 | }
10 | };
11 |
12 | const withEpPreffix = (converter) => ({
13 | ...converter,
14 | convert: (model, msg, publish, options, meta) => {
15 | const epID = msg.endpoint.ID;
16 | const converterResults = converter.convert(model, msg, publish, options, meta);
17 | return Object.keys(converterResults)
18 | .reduce((result, key) => {
19 | result[`${key}_${epID}`] = converterResults[key];
20 | return result;
21 | }, {});
22 | },
23 | });
24 |
25 | const contactDiscovery = {
26 | type: 'binary_sensor',
27 | object_id: 'contact',
28 | discovery_payload: {
29 | payload_on: true,
30 | payload_off: false,
31 | value_template: '{{ value_json.contact }}',
32 | },
33 | };
34 |
35 |
36 | const device = {
37 | zigbeeModel: ['DIYRuZ_Reed'],
38 | model: 'DIYRuZ_Reed',
39 | vendor: 'DIYRuZ',
40 | description: '[Reed switch](http://xxx.ru)',
41 | supports: '',
42 | fromZigbee: [
43 | fromZigbeeConverters.ias_contact_alarm_1,
44 | fromZigbeeConverters.battery,
45 | ],
46 | toZigbee: [],
47 | meta: {
48 | configureKey: 1,
49 | disableDefaultResponse: true,
50 | },
51 | configure: async (device, coordinatorEndpoint) => {
52 | for (ep of [1, 2, 3]) {
53 | await bind(device.getEndpoint(ep), coordinatorEndpoint, [
54 | 'genPowerCfg',
55 | 'ssIasZone'
56 | ]);
57 | };
58 | },
59 | homeassistant: [contactDiscovery]
60 | };
61 |
62 | module.exports = device;
63 |
--------------------------------------------------------------------------------
/Source/OSAL_App.c:
--------------------------------------------------------------------------------
1 | #include "OSAL.h"
2 | #include "OSAL_Tasks.h"
3 | #include "ZComDef.h"
4 | #include "hal_drivers.h"
5 |
6 | #include "APS.h"
7 | #include "ZDApp.h"
8 | #include "nwk.h"
9 |
10 | #include "bdb_interface.h"
11 | #include "zcl_app.h"
12 | #include "factory_reset.h"
13 | #include "commissioning.h"
14 | #include "Debug.h"
15 | #include "battery.h"
16 |
17 | #if defined ( MT_TASK )
18 | #include "MT.h"
19 | #include "MT_TASK.h"
20 | #endif
21 |
22 | const pTaskEventHandlerFn tasksArr[] = {macEventLoop,
23 | nwk_event_loop,
24 | Hal_ProcessEvent,
25 | #if defined( MT_TASK )
26 | MT_ProcessEvent,
27 | #endif
28 | APS_event_loop,
29 | ZDApp_event_loop,
30 | zcl_event_loop,
31 | bdb_event_loop,
32 | zclApp_event_loop,
33 | zclFactoryResetter_loop,
34 | zclCommissioning_event_loop,
35 | zclBattery_event_loop
36 | };
37 |
38 | const uint8 tasksCnt = sizeof(tasksArr) / sizeof(tasksArr[0]);
39 | uint16 *tasksEvents;
40 |
41 | void osalInitTasks(void) {
42 | DebugInit();
43 | uint8 taskID = 0;
44 |
45 | tasksEvents = (uint16 *)osal_mem_alloc(sizeof(uint16) * tasksCnt);
46 | osal_memset(tasksEvents, 0, (sizeof(uint16) * tasksCnt));
47 | macTaskInit(taskID++);
48 | nwk_init(taskID++);
49 | Hal_Init(taskID++);
50 | #if defined( MT_TASK )
51 | MT_TaskInit( taskID++ );
52 | #endif
53 | APS_Init(taskID++);
54 | ZDApp_Init(taskID++);
55 | zcl_Init(taskID++);
56 | bdb_Init(taskID++);
57 | zclApp_Init(taskID++);
58 | zclFactoryResetter_Init(taskID++);
59 | zclCommissioning_Init(taskID++);
60 | zclBattery_Init(taskID++);
61 | }
62 |
63 | /*********************************************************************
64 | *********************************************************************/
65 |
--------------------------------------------------------------------------------
/Source/preinclude.h:
--------------------------------------------------------------------------------
1 | #define TC_LINKKEY_JOIN
2 | #define NV_INIT
3 | #define NV_RESTORE
4 |
5 |
6 | #define TP2_LEGACY_ZC
7 | //patch sdk
8 | // #define ZDSECMGR_TC_ATTEMPT_DEFAULT_KEY TRUE
9 |
10 | #define NWK_AUTO_POLL
11 | #define MULTICAST_ENABLED FALSE
12 |
13 | #define ZCL_READ
14 | #define ZCL_BASIC
15 | #define ZCL_IDENTIFY
16 | #define ZCL_ZONE
17 |
18 | #define ZSTACK_DEVICE_BUILD (DEVICE_BUILD_ENDDEVICE)
19 |
20 | #define DISABLE_GREENPOWER_BASIC_PROXY
21 | #define BDB_FINDING_BINDING_CAPABILITY_ENABLED 1
22 |
23 | #define ZCL_REPORTING_DEVICE
24 |
25 | #define ISR_KEYINTERRUPT
26 | #define HAL_BUZZER FALSE
27 |
28 | #define HAL_LED TRUE
29 | #define HAL_I2C TRUE
30 | #define BLINK_LEDS TRUE
31 |
32 |
33 | //one of this boards
34 | // #define HAL_BOARD_TARGET
35 | // #define HAL_BOARD_CHDTECH_DEV
36 |
37 | #if !defined(HAL_BOARD_TARGET) && !defined(HAL_BOARD_CHDTECH_DEV)
38 | #error "Board type must be defined"
39 | #endif
40 |
41 | #define BDB_MAX_CLUSTERENDPOINTS_REPORTING 10
42 |
43 | #if defined(HAL_BOARD_TARGET)
44 | #define POWER_SAVING
45 | #define DO_DEBUG_UART
46 | #elif defined(HAL_BOARD_CHDTECH_DEV)
47 | #define DO_DEBUG_UART
48 | // #define DO_DEBUG_MT
49 | #endif
50 |
51 |
52 |
53 | #ifdef DO_DEBUG_UART
54 | #define HAL_UART TRUE
55 | #define HAL_UART_DMA 1
56 | #define INT_HEAP_LEN (2685 - 0x4B - 0xBB)
57 | #endif
58 |
59 | #ifdef DO_DEBUG_MT
60 | #define HAL_UART TRUE
61 | #define HAL_UART_DMA 1
62 | #define HAL_UART_ISR 2
63 | #define INT_HEAP_LEN (2688-0xC4-0x15-0x44-0x20-0x1E)
64 |
65 | #define MT_TASK
66 |
67 | #define MT_UTIL_FUNC
68 | #define MT_UART_DEFAULT_BAUDRATE HAL_UART_BR_115200
69 | #define MT_UART_DEFAULT_OVERFLOW FALSE
70 |
71 | #define ZTOOL_P1
72 |
73 | #define MT_APP_FUNC
74 | #define MT_APP_CNF_FUNC
75 | #define MT_SYS_FUNC
76 | #define MT_ZDO_FUNC
77 | #define MT_ZDO_MGMT
78 | #define MT_DEBUG_FUNC
79 |
80 | #endif
81 |
82 |
83 |
84 | #if defined(HAL_BOARD_TARGET)
85 | #define FACTORY_RESET_BY_LONG_PRESS_PORT 0x04 //port2
86 |
87 | #define HAL_KEY_P0_INPUT_PINS BV(5)
88 | #define HAL_KEY_P0_INPUT_PINS_EDGE HAL_KEY_RISING_EDGE
89 |
90 | #define HAL_KEY_P2_INPUT_PINS BV(0)
91 |
92 | #elif defined(HAL_BOARD_CHDTECH_DEV)
93 | #define FACTORY_RESET_BY_LONG_PRESS_PORT 0x01
94 |
95 | #define HAL_KEY_P0_INPUT_PINS BV(1)
96 | // #define HAL_KEY_P0_INPUT_PINS_EDGE HAL_KEY_RISING_EDGE
97 |
98 | #define HAL_KEY_P1_INPUT_PINS BV(1)
99 |
100 | #define HAL_KEY_P2_INPUT_PINS BV(0)
101 | #endif
102 |
103 | #include "hal_board_cfg.h"
104 |
105 | #include "stdint.h"
106 | #include "stddef.h"
107 |
--------------------------------------------------------------------------------
/Source/zcl_app.h:
--------------------------------------------------------------------------------
1 | #ifndef ZCL_APP_H
2 | #define ZCL_APP_H
3 |
4 | #ifdef __cplusplus
5 | extern "C" {
6 | #endif
7 |
8 | /*********************************************************************
9 | * INCLUDES
10 | */
11 | #include "version.h"
12 | #include "zcl.h"
13 |
14 |
15 | /*********************************************************************
16 | * CONSTANTS
17 | */
18 | #define HAL_UNKNOWN_BUTTON HAL_KEY_CODE_NOKEY
19 | // Application Events
20 |
21 | #define APP_CONST_ONE_MINUTE_IN_MS ((uint32) 60 * (uint32) 1000)
22 |
23 |
24 |
25 | #define APP_REPORT_DELAY (30 * APP_CONST_ONE_MINUTE_IN_MS)
26 |
27 |
28 | /*********************************************************************
29 | * MACROS
30 | */
31 |
32 | #define R ACCESS_CONTROL_READ
33 | #define RR (R | ACCESS_REPORTABLE)
34 |
35 | #define BASIC ZCL_CLUSTER_ID_GEN_BASIC
36 | #define POWER_CFG ZCL_CLUSTER_ID_GEN_POWER_CFG
37 | #define TEMP ZCL_CLUSTER_ID_MS_TEMPERATURE_MEASUREMENT
38 | #define HUMIDITY ZCL_CLUSTER_ID_MS_RELATIVE_HUMIDITY
39 | #define PRESSURE ZCL_CLUSTER_ID_MS_PRESSURE_MEASUREMENT
40 | #define ILLUMINANCE ZCL_CLUSTER_ID_MS_ILLUMINANCE_MEASUREMENT
41 | #define IAS_ZONE ZCL_CLUSTER_ID_SS_IAS_ZONE
42 |
43 | #define ZCL_UINT8 ZCL_DATATYPE_UINT8
44 | #define ZCL_UINT16 ZCL_DATATYPE_UINT16
45 | #define ZCL_UINT32 ZCL_DATATYPE_UINT32
46 | #define ZCL_INT16 ZCL_DATATYPE_INT16
47 |
48 |
49 | #define ATTRID_MS_PRESSURE_MEASUREMENT_MEASURED_VALUE_HPA 0x0200
50 | #define ATTRID_POWER_CFG_BATTERY_VOLTAGE_RAW_ADC 0x0200
51 | #define ATTRID_MS_RELATIVE_HUMIDITY_MEASURED_VALUE_RAW_ADC 0x0200
52 |
53 |
54 |
55 | /*********************************************************************
56 | * TYPEDEFS
57 | */
58 |
59 | /*********************************************************************
60 | * VARIABLES
61 | */
62 |
63 | extern SimpleDescriptionFormat_t zclApp_FirstEP;
64 | extern SimpleDescriptionFormat_t zclApp_SecondEP;
65 | extern SimpleDescriptionFormat_t zclApp_ThirdEP;
66 |
67 | extern uint8 zclApp_BatteryVoltage;
68 | extern uint8 zclApp_BatteryPercentageRemainig;
69 |
70 |
71 | // attribute list
72 | extern CONST zclAttrRec_t zclApp_AttrsFirstEP[];
73 | extern CONST uint8 zclApp_AttrsFirstEPCount;
74 |
75 |
76 | extern const uint8 zclApp_ManufacturerName[];
77 | extern const uint8 zclApp_ModelId[];
78 | extern const uint8 zclApp_PowerSource;
79 |
80 | // APP_TODO: Declare application specific attributes here
81 |
82 | /*********************************************************************
83 | * FUNCTIONS
84 | */
85 |
86 | /*
87 | * Initialization for the task
88 | */
89 | extern void zclApp_Init(byte task_id);
90 |
91 |
92 | /*
93 | * Event Process for the task
94 | */
95 | extern UINT16 zclApp_event_loop(byte task_id, UINT16 events);
96 |
97 | void user_delay_ms(uint32_t period);
98 |
99 | #ifdef __cplusplus
100 | }
101 | #endif
102 |
103 | #endif /* ZCL_APP_H */
104 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | 
3 |
4 | Continuing the automation of the apartment, the idea came to make a doorbell button with ZigBee support. Sergey decided to use the factory model CACAZI A8 as a case with an acceptable cost - about 230 rubles at the time of original writing.
5 |
6 | 
7 |
8 | The heart of the device is the popular E18-MS1-IPX module. You can also use the version with a built-in antenna, but Sergey thought that the signal quality behind the metal entrance door would not be very good.
9 |
10 | The circuitry is designed in such a way that power is supplied from a 12V23A battery. In theory, its capacity should be sufficient for a fairly long operating time (the stabilizer has a very small voltage drop). However, this approach loses the ability to control the charge (the value will always be at 100%). How justified this approach is - time will tell.
11 |
12 | When using an external antenna, it can be attached to the inside of the front of the case. Particular attention should be paid to the installation site of the U1-U4: depending on the selected model, a different seat is used (only one microcircuit can be installed at a time!). The main button and battery holders can be taken from the original board.
13 |
14 | 
15 |
16 | 
17 |
18 |
19 | Initially, the printed board was developed for the well-known Jager_magnet firmware from @DJONvl, but during the tests it was revealed that it behaves incorrectly with wireless modules from Ebyte. Then, thanks to the efforts of @anonymass, a new one was written, which works great and is open source, for which many thanks to him! It can also be used with a universal ZigBee module to create your own devices based on it.
20 |
21 | Sprint Layout 6.0 file: cacazi-a8-zigbee_1.2mm.lay6 (59.3 Kb)
22 | Gerber files: cacazi-a8-zigbee_1.2mm_gerber.zip (13.7 Kb)
23 |
24 | P.S. Additionally, Sergey drew a printed circuit board with a "classic" power system for CR2032. With it, the battery charge should be displayed correctly, but the capacity of such a battery will naturally be much lower. However, it is not yet known how the 12V23A version will behave in the long term, so for self-repetition Sergey recommend using the version below.
25 |
26 | Sprint Layout 6.0 file: cacazi-a8-zigbee_cr2032_1.2mm.lay6 (36.7 Kb)
27 | Gerber files: cacazi-a8-zigbee_cr2032_1.2mm_gerber.zip (9.47 Kb)
28 |
29 |
30 | ### How to add device into zigbe2mqtt
31 | Just try to join. If any errros - use [external converters](https://www.zigbee2mqtt.io/information/configuration.html#external-converters-configuration) feature
32 |
33 | Converter file located [here](https://github.com/diyruz/reed/blob/master/z2m-converter/DIYRuZ_Reed.js)
34 |
35 |
36 | ### How to join
37 | #### If device in FN (factory new) state:
38 | 1. Press and hold button (1) for 2-3 seconds, until device start flashing led
39 | 2. Wait, in case of successfully join, device will flash led 5 times
40 | 3. If join failed, device will flash led 3 times
41 |
42 | #### If device in a network:
43 | 1. Hold button (1) for 10 seconds, this will reset device to FN (factory new) status
44 | 2. Go to step 1 for FN device
45 |
46 |
47 | ### Files to reproduce
48 | * [Gerbers and lay6 files](https://github.com/diyruz/reed/tree/master/hardware) by [AvdeevSV](https://io-net.ru/author/avdeevsv/)
49 | * [Firmware](https://github.com/diyruz/reed/releases) by [@anonymass](https://t.me/anonymass)
50 |
51 |
52 | [Original post by AvdeevSV](https://io-net.ru/knopka-dvernogo-zvonka-zigbee)
53 |
--------------------------------------------------------------------------------
/Source/zcl_app.c:
--------------------------------------------------------------------------------
1 |
2 | #include "AF.h"
3 | #include "OSAL.h"
4 | #include "OSAL_Clock.h"
5 |
6 | #include "ZComDef.h"
7 | #include "ZDApp.h"
8 | #include "ZDNwkMgr.h"
9 | #include "ZDObject.h"
10 | #include "math.h"
11 |
12 | #include "nwk_util.h"
13 | #include "zcl.h"
14 | #include "zcl_app.h"
15 | #include "zcl_diagnostic.h"
16 | #include "zcl_general.h"
17 | #include "zcl_ss.h"
18 |
19 | #include "bdb.h"
20 | #include "bdb_interface.h"
21 | #include "gp_interface.h"
22 |
23 | #include "Debug.h"
24 | #include "battery.h"
25 |
26 | #include "OnBoard.h"
27 |
28 | /* HAL */
29 |
30 | #include "hal_drivers.h"
31 | #include "hal_i2c.h"
32 | #include "hal_key.h"
33 | #include "hal_led.h"
34 |
35 | #include "battery.h"
36 | #include "commissioning.h"
37 | #include "factory_reset.h"
38 | #include "utils.h"
39 | #include "version.h"
40 |
41 | /*********************************************************************
42 | * MACROS
43 | */
44 |
45 | /*********************************************************************
46 | * CONSTANTS
47 | */
48 |
49 | /*********************************************************************
50 | * TYPEDEFS
51 | */
52 |
53 | /*********************************************************************
54 | * GLOBAL VARIABLES
55 | */
56 |
57 | extern bool requestNewTrustCenterLinkKey;
58 | byte zclApp_TaskID;
59 |
60 | /*********************************************************************
61 | * GLOBAL FUNCTIONS
62 | */
63 |
64 | /*********************************************************************
65 | * LOCAL VARIABLES
66 | */
67 | afAddrType_t inderect_DstAddr = {.addrMode = (afAddrMode_t)AddrNotPresent, .endPoint = 0, .addr.shortAddr = 0};
68 | /*********************************************************************
69 | * LOCAL FUNCTIONS
70 | */
71 | static void zclApp_HandleKeys(byte shift, byte keys);
72 |
73 | /*********************************************************************
74 | * ZCL General Profile Callback table
75 | */
76 | static zclGeneral_AppCallbacks_t zclApp_CmdCallbacks = {
77 | NULL, // Basic Cluster Reset command
78 | NULL, // Identify Trigger Effect command
79 | NULL, // On/Off cluster commands
80 | NULL, // On/Off cluster enhanced command Off with Effect
81 | NULL, // On/Off cluster enhanced command On with Recall Global Scene
82 | NULL, // On/Off cluster enhanced command On with Timed Off
83 | NULL, // RSSI Location command
84 | NULL // RSSI Location Response command
85 | };
86 |
87 | void zclApp_Init(byte task_id) {
88 | // this is important to allow connects throught routers
89 | // to make this work, coordinator should be compiled with this flag #define TP2_LEGACY_ZC
90 | requestNewTrustCenterLinkKey = FALSE;
91 |
92 | zclApp_TaskID = task_id;
93 |
94 | zclGeneral_RegisterCmdCallbacks(1, &zclApp_CmdCallbacks);
95 | zcl_registerAttrList(zclApp_FirstEP.EndPoint, zclApp_AttrsFirstEPCount, zclApp_AttrsFirstEP);
96 | bdb_RegisterSimpleDescriptor(&zclApp_FirstEP);
97 | bdb_RegisterSimpleDescriptor(&zclApp_SecondEP);
98 | bdb_RegisterSimpleDescriptor(&zclApp_ThirdEP);
99 |
100 | zcl_registerForMsg(zclApp_TaskID);
101 |
102 | // Register for all key events - This app will handle all key events
103 | RegisterForKeys(zclApp_TaskID);
104 | LREP("Started build %s \r\n", zclApp_DateCodeNT);
105 | ZMacSetTransmitPower(TX_PWR_PLUS_4); // set 4dBm
106 | }
107 |
108 | uint16 zclApp_event_loop(uint8 task_id, uint16 events) {
109 | afIncomingMSGPacket_t *MSGpkt;
110 |
111 | (void)task_id; // Intentionally unreferenced parameter
112 | if (events & SYS_EVENT_MSG) {
113 | while ((MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive(zclApp_TaskID))) {
114 | switch (MSGpkt->hdr.event) {
115 | case KEY_CHANGE:
116 | zclApp_HandleKeys(((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys);
117 | break;
118 |
119 | case ZCL_INCOMING_MSG:
120 | if (((zclIncomingMsg_t *)MSGpkt)->attrCmd) {
121 | osal_mem_free(((zclIncomingMsg_t *)MSGpkt)->attrCmd);
122 | }
123 | break;
124 |
125 | default:
126 | break;
127 | }
128 | // Release the memory
129 | osal_msg_deallocate((uint8 *)MSGpkt);
130 | }
131 | // return unprocessed events
132 | return (events ^ SYS_EVENT_MSG);
133 | }
134 |
135 | // Discard unknown events
136 | return 0;
137 | }
138 |
139 | static void zclApp_HandleKeys(byte portAndAction, byte keyCode) {
140 | LREP("zclApp_HandleKeys portAndAction=0x%X keyCode=0x%X\r\n", portAndAction, keyCode);
141 | HalLedSet(HAL_LED_1, HAL_LED_MODE_BLINK);
142 | zclFactoryResetter_HandleKeys(portAndAction, keyCode);
143 | zclCommissioning_HandleKeys(portAndAction, keyCode);
144 | zclBattery_HandleKeys(portAndAction, keyCode);
145 | bool contact = portAndAction & HAL_KEY_PRESS ? TRUE : FALSE;
146 | uint8 endPoint = 0;
147 | if (portAndAction & HAL_KEY_PORT0) {
148 | endPoint = zclApp_FirstEP.EndPoint;
149 | } else if (portAndAction & HAL_KEY_PORT1) {
150 | endPoint = zclApp_SecondEP.EndPoint;
151 | } else if (portAndAction & HAL_KEY_PORT2) {
152 | endPoint = zclApp_ThirdEP.EndPoint;
153 | }
154 |
155 | LREP("contact=%d endpoint=%d\r\n", contact, endPoint);
156 | uint16 alarmStatus = 0;
157 | if (!contact) {
158 | alarmStatus |= BV(0);
159 | }
160 |
161 | zclSS_IAS_Send_ZoneStatusChangeNotificationCmd(endPoint, &inderect_DstAddr, alarmStatus, 0, 0, 0, true, bdb_getZCLFrameCounter());
162 | }
163 |
164 | /****************************************************************************
165 | ****************************************************************************/
166 |
--------------------------------------------------------------------------------
/Source/zcl_app_data.c:
--------------------------------------------------------------------------------
1 | #include "AF.h"
2 | #include "OSAL.h"
3 | #include "ZComDef.h"
4 | #include "ZDConfig.h"
5 |
6 | #include "zcl.h"
7 | #include "zcl_general.h"
8 | #include "zcl_ms.h"
9 | #include "zcl_ha.h"
10 |
11 | #include "zcl_app.h"
12 |
13 | #include "battery.h"
14 | #include "version.h"
15 | /*********************************************************************
16 | * CONSTANTS
17 | */
18 |
19 | #define APP_DEVICE_VERSION 2
20 | #define APP_FLAGS 0
21 |
22 | #define APP_HWVERSION 1
23 | #define APP_ZCLVERSION 1
24 |
25 | /*********************************************************************
26 | * TYPEDEFS
27 | */
28 |
29 | /*********************************************************************
30 | * MACROS
31 | */
32 |
33 | /*********************************************************************
34 | * GLOBAL VARIABLES
35 | */
36 |
37 | // Global attributes
38 | const uint16 zclApp_clusterRevision_all = 0x0001;
39 |
40 | // Basic Cluster
41 | const uint8 zclApp_HWRevision = APP_HWVERSION;
42 | const uint8 zclApp_ZCLVersion = APP_ZCLVERSION;
43 | const uint8 zclApp_ApplicationVersion = 2;
44 | const uint8 zclApp_StackVersion = 4;
45 |
46 | //{lenght, 'd', 'a', 't', 'a'}
47 | const uint8 zclApp_ManufacturerName[] = {9, 'i', 'o', '-', 'n', 'e', 't', '.', 'r', 'u'};
48 | const uint8 zclApp_ModelId[] = {11, 'D', 'I', 'Y', 'R', 'u', 'Z', '_', 'R', 'e', 'e', 'd'};
49 | const uint8 zclApp_PowerSource = POWER_SOURCE_BATTERY;
50 |
51 | /*********************************************************************
52 | * ATTRIBUTE DEFINITIONS - Uses REAL cluster IDs
53 | */
54 |
55 | CONST zclAttrRec_t zclApp_AttrsFirstEP[] = {
56 | {BASIC, {ATTRID_BASIC_ZCL_VERSION, ZCL_UINT8, R, (void *)&zclApp_ZCLVersion}},
57 | {BASIC, {ATTRID_BASIC_APPL_VERSION, ZCL_UINT8, R, (void *)&zclApp_ApplicationVersion}},
58 | {BASIC, {ATTRID_BASIC_STACK_VERSION, ZCL_UINT8, R, (void *)&zclApp_StackVersion}},
59 | {BASIC, {ATTRID_BASIC_HW_VERSION, ZCL_UINT8, R, (void *)&zclApp_HWRevision}},
60 | {BASIC, {ATTRID_BASIC_MANUFACTURER_NAME, ZCL_DATATYPE_CHAR_STR, R, (void *)zclApp_ManufacturerName}},
61 | {BASIC, {ATTRID_BASIC_MODEL_ID, ZCL_DATATYPE_CHAR_STR, R, (void *)zclApp_ModelId}},
62 | {BASIC, {ATTRID_BASIC_DATE_CODE, ZCL_DATATYPE_CHAR_STR, R, (void *)zclApp_DateCode}},
63 | {BASIC, {ATTRID_BASIC_POWER_SOURCE, ZCL_DATATYPE_ENUM8, R, (void *)&zclApp_PowerSource}},
64 | {BASIC, {ATTRID_BASIC_SW_BUILD_ID, ZCL_UINT8, R, (void *)&zclApp_ApplicationVersion}},
65 | {BASIC, {ATTRID_CLUSTER_REVISION, ZCL_DATATYPE_UINT16, R, (void *)&zclApp_clusterRevision_all}},
66 | {POWER_CFG, {ATTRID_POWER_CFG_BATTERY_VOLTAGE, ZCL_UINT8, RR, (void *)&zclBattery_Voltage}},
67 | {POWER_CFG, {ATTRID_POWER_CFG_BATTERY_PERCENTAGE_REMAINING, ZCL_UINT8, RR, (void *)&zclBattery_PercentageRemainig}}
68 | };
69 |
70 | uint8 CONST zclApp_AttrsFirstEPCount = (sizeof(zclApp_AttrsFirstEP) / sizeof(zclApp_AttrsFirstEP[0]));
71 |
72 | const cId_t zclApp_InClusterList[] = {ZCL_CLUSTER_ID_GEN_BASIC};
73 |
74 | #define APP_MAX_INCLUSTERS (sizeof(zclApp_InClusterList) / sizeof(zclApp_InClusterList[0]))
75 |
76 | const cId_t zclApp_OutClusterListFirstEP[] = {POWER_CFG, IAS_ZONE};
77 | const cId_t zclApp_OutClusterListOtherEP[] = {IAS_ZONE};
78 |
79 |
80 | #define APP_MAX_OUTCLUSTERS_FIRST_EP (sizeof(zclApp_OutClusterListFirstEP) / sizeof(zclApp_OutClusterListFirstEP[0]))
81 |
82 |
83 | SimpleDescriptionFormat_t zclApp_FirstEP = {
84 | 1, // int Endpoint;
85 | ZCL_HA_PROFILE_ID, // uint16 AppProfId[2];
86 | ZCL_HA_DEVICEID_SIMPLE_SENSOR, // uint16 AppDeviceId[2];
87 | APP_DEVICE_VERSION, // int AppDevVer:4;
88 | APP_FLAGS, // int AppFlags:4;
89 | APP_MAX_INCLUSTERS, // byte AppNumInClusters;
90 | (cId_t *)zclApp_InClusterList, // byte *pAppInClusterList;
91 | APP_MAX_OUTCLUSTERS_FIRST_EP, // byte AppNumInClusters;
92 | (cId_t *)zclApp_OutClusterListFirstEP // byte *pAppInClusterList;
93 | };
94 |
95 | SimpleDescriptionFormat_t zclApp_SecondEP = {
96 | 2, // int Endpoint;
97 | ZCL_HA_PROFILE_ID, // uint16 AppProfId[2];
98 | ZCL_HA_DEVICEID_SIMPLE_SENSOR, // uint16 AppDeviceId[2];
99 | APP_DEVICE_VERSION, // int AppDevVer:4;
100 | APP_FLAGS, // int AppFlags:4;
101 | 0, // byte AppNumInClusters;
102 | (cId_t *)NULL, // byte *pAppInClusterList;
103 | 1, // byte AppNumInClusters;
104 | (cId_t *)zclApp_OutClusterListOtherEP // byte *pAppInClusterList;
105 | };
106 |
107 |
108 | SimpleDescriptionFormat_t zclApp_ThirdEP = {
109 | 3, // int Endpoint;
110 | ZCL_HA_PROFILE_ID, // uint16 AppProfId[2];
111 | ZCL_HA_DEVICEID_SIMPLE_SENSOR, // uint16 AppDeviceId[2];
112 | APP_DEVICE_VERSION, // int AppDevVer:4;
113 | APP_FLAGS, // int AppFlags:4;
114 | 0, // byte AppNumInClusters;
115 | (cId_t *)NULL, // byte *pAppInClusterList;
116 | 1, // byte AppNumInClusters;
117 | (cId_t *)zclApp_OutClusterListOtherEP // byte *pAppInClusterList;
118 | };
--------------------------------------------------------------------------------
/Source/f8wConfig.cfg:
--------------------------------------------------------------------------------
1 | /*
2 | * f8wConfig.cfg
3 | *
4 | * Compiler command-line options used to define a TI Z-Stack ZigBee device.
5 | * To move an option from here to the project file, comment out or delete the
6 | * option from this file and enter it into the "Define Symbols" box under the
7 | * Preprocessor tab of the C/C++ Compiler Project Options. New user defined
8 | * options may be added to this file, as necessary.
9 | *
10 | * Each macro is prefixed with '-D'. The entries are to be constructed as if
11 | * they are to be on the compiler command line invocation (which they are).
12 | *
13 | * NOTE: The RHS (Right-Hand-Side) must be quoted if there are embedded blanks.
14 | * See the DEFAULT_KEY definition for an example.
15 | */
16 |
17 | /* Enable ZigBee-Pro */
18 | -DZIGBEEPRO
19 |
20 | /* Set to 1 to enable security. To disable set to 0 */
21 | -DSECURE=1
22 | -DZG_SECURE_DYNAMIC=0
23 |
24 | /* Enable the Reflector */
25 | -DREFLECTOR
26 |
27 | /* Default channel is Channel 11 - 0x0B */
28 | // Channels are defined in the following:
29 | // 0 : 868 MHz 0x00000001
30 | // 1 - 10 : 915 MHz 0x000007FE
31 | // 11 - 26 : 2.4 GHz 0x07FFF800
32 | //
33 | //-DMAX_CHANNELS_868MHZ 0x00000001
34 | //-DMAX_CHANNELS_915MHZ 0x000007FE
35 | //-DMAX_CHANNELS_24GHZ 0x07FFF800
36 | //-DDEFAULT_CHANLIST=0x04000000 // 26 - 0x1A
37 | //-DDEFAULT_CHANLIST=0x02000000 // 25 - 0x19
38 | //-DDEFAULT_CHANLIST=0x01000000 // 24 - 0x18
39 | //-DDEFAULT_CHANLIST=0x00800000 // 23 - 0x17
40 | //-DDEFAULT_CHANLIST=0x00400000 // 22 - 0x16
41 | //-DDEFAULT_CHANLIST=0x00200000 // 21 - 0x15
42 | //-DDEFAULT_CHANLIST=0x00100000 // 20 - 0x14
43 | //-DDEFAULT_CHANLIST=0x00080000 // 19 - 0x13
44 | //-DDEFAULT_CHANLIST=0x00040000 // 18 - 0x12
45 | //-DDEFAULT_CHANLIST=0x00020000 // 17 - 0x11
46 | //-DDEFAULT_CHANLIST=0x00010000 // 16 - 0x10
47 | //-DDEFAULT_CHANLIST=0x00008000 // 15 - 0x0F
48 | //-DDEFAULT_CHANLIST=0x00004000 // 14 - 0x0E
49 | //-DDEFAULT_CHANLIST=0x00002000 // 13 - 0x0D
50 | //-DDEFAULT_CHANLIST=0x00001000 // 12 - 0x0C
51 | -DDEFAULT_CHANLIST=0x07FFF800 // ALL channels
52 |
53 | /* Define the default PAN ID.
54 | *
55 | * Setting this to a value other than 0xFFFF causes
56 | * ZDO_COORD to use this value as its PAN ID and
57 | * Routers and end devices to join PAN with this ID
58 | */
59 | -DZDAPP_CONFIG_PAN_ID=0xFFFF
60 |
61 | /* Minimum number of milliseconds to hold off the start of the device
62 | * in the network and the minimum delay between joining cycles.
63 | */
64 | -DNWK_START_DELAY=100
65 |
66 | /* Mask for the random joining delay. This value is masked with
67 | * the return from osal_rand() to get a random delay time for
68 | * each joining cycle. This random value is added to NWK_START_DELAY.
69 | * For example, a value of 0x007F will be a joining delay of 0 to 127
70 | * milliseconds.
71 | */
72 | -DEXTENDED_JOINING_RANDOM_MASK=0x007F
73 |
74 | /* Minimum number of milliseconds to delay between each beacon request
75 | * in a joining cycle.
76 | */
77 | -DBEACON_REQUEST_DELAY=100
78 |
79 | /* Mask for the random beacon request delay. This value is masked with the
80 | * return from osal_rand() to get a random delay time for each joining cycle.
81 | * This random value is added to DBEACON_REQUEST_DELAY. For example, a value
82 | * of 0x00FF will be a beacon request delay of 0 to 255 milliseconds.
83 | */
84 | -DBEACON_REQ_DELAY_MASK=0x00FF
85 |
86 | /* Jitter mask for the link status report timer. This value is masked with the
87 | * return from osal_rand() to add a random delay to _NIB.nwkLinkStatusPeriod.
88 | * For example, a value of 0x007F allows a jitter between 0-127 milliseconds.
89 | */
90 | -DLINK_STATUS_JITTER_MASK=0x007F
91 |
92 | /* in seconds; set to 0 to turn off route expiry */
93 | -DROUTE_EXPIRY_TIME=30
94 |
95 | /* This number is used by polled devices, since the spec'd formula
96 | * doesn't work for sleeping end devices. For non-polled devices,
97 | * a formula is used. Value is in 2 milliseconds periods
98 | */
99 | -DAPSC_ACK_WAIT_DURATION_POLLED=3000
100 |
101 | /* Default indirect message holding timeout value:
102 | * 1-65535 (0 -> 65536) X CNT_RTG_TIMER X RTG_TIMER_INTERVAL
103 | */
104 | -DNWK_INDIRECT_MSG_TIMEOUT=7
105 |
106 | /* The number of simultaneous route discoveries in network */
107 | -DMAX_RREQ_ENTRIES=8
108 |
109 | /* The maximum number of retries allowed after a transmission failure */
110 | -DAPSC_MAX_FRAME_RETRIES=3
111 |
112 | /* Max number of times retry looking for the next hop address of a message */
113 | -DNWK_MAX_DATA_RETRIES=2
114 |
115 | /* Number of times retry to poll parent before indicating loss of synchronization
116 | * with parent. Note that larger value will cause longer delay for the child to
117 | * rejoin the network.
118 | */
119 | -DMAX_POLL_FAILURE_RETRIES=2
120 |
121 | /* The number of items in the broadcast table */
122 | -DMAX_BCAST=9
123 |
124 | /* The maximum number of groups in the groups table */
125 | -DAPS_MAX_GROUPS=16
126 |
127 | /* Number of entries in the regular routing table plus additional
128 | * entries for route repair
129 | */
130 | -DMAX_RTG_ENTRIES=40
131 |
132 | /* Maximum number of entries in the Binding table. */
133 | -DNWK_MAX_BINDING_ENTRIES=5
134 |
135 | /* Maximum number of cluster IDs for each binding table entry.
136 | * Note that any value other than the default value may cause a
137 | * compilation warning but Device Binding will function correctly.
138 | */
139 | -DMAX_BINDING_CLUSTER_IDS=4
140 |
141 | /* Default security key. */
142 | -DDEFAULT_KEY="{0}"
143 |
144 | /* Reset when ASSERT occurs, otherwise flash LEDs */
145 | //-DASSERT_RESET
146 |
147 | /* Set the MAC MAX Frame Size (802.15.4 default is 102) */
148 | -DMAC_MAX_FRAME_SIZE=116
149 |
150 | /* Minimum transmissions attempted for Channel Interference detection,
151 | * Frequency Agility can be disabled by setting this parameter to zero.
152 | */
153 | -DZDNWKMGR_MIN_TRANSMISSIONS=20
154 |
155 | /* Compiler keywords */
156 | -DCONST="const __code"
157 | -DGENERIC=__generic
158 |
159 | /****************************************
160 | * The following are for End Devices only
161 | ***************************************/
162 |
163 | -DRFD_RCVC_ALWAYS_ON=FALSE
164 |
165 | /* The number of milliseconds to wait between data request polls to the coordinator. */
166 | -DPOLL_RATE=1000
167 |
168 | /* This is used after receiving a data indication to poll immediately
169 | * for queued messages...in milliseconds.
170 | */
171 | -DQUEUED_POLL_RATE=100
172 |
173 | /* This is used after receiving a data confirmation to poll immediately
174 | * for response messages...in milliseconds
175 | */
176 | -DRESPONSE_POLL_RATE=100
177 |
178 | /* This is used as an alternate response poll rate only for rejoin request.
179 | * This rate is determined by the response time of the parent that the device
180 | * is trying to join.
181 | */
182 | -DREJOIN_POLL_RATE=440
183 |
184 | /* Rejoin retry backoff silent period timer duration in milliseconds - default 15 minutes according to HA test spec */
185 | -DREJOIN_BACKOFF=900000
186 |
187 | /* Rejoin retry backoff scan timer duration in milliseconds - default 15 minutes according to HA test spec */
188 | -DREJOIN_SCAN=900000
189 |
190 | /* Latest sample apps use LED4 and do not use S1 switch */
191 | -DENABLE_LED4_DISABLE_S1
--------------------------------------------------------------------------------
/Source/hal_board_cfg.h:
--------------------------------------------------------------------------------
1 | #ifndef HAL_BOARD_CFG_H
2 | #define HAL_BOARD_CFG_H
3 |
4 |
5 | /* ------------------------------------------------------------------------------------------------
6 | * Includes
7 | * ------------------------------------------------------------------------------------------------
8 | */
9 |
10 | #include "hal_mcu.h"
11 | #include "hal_defs.h"
12 | #include "hal_types.h"
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | /* ------------------------------------------------------------------------------------------------
21 | * Clock Speed
22 | * ------------------------------------------------------------------------------------------------
23 | */
24 |
25 | #define HAL_CPU_CLOCK_MHZ 32
26 |
27 | /* 32 kHz clock source select in CLKCONCMD */
28 | #if !defined (OSC32K_CRYSTAL_INSTALLED) || (defined (OSC32K_CRYSTAL_INSTALLED) && (OSC32K_CRYSTAL_INSTALLED == TRUE))
29 | #define OSC_32KHZ 0x00 /* external 32 KHz xosc */
30 | #else
31 | #define OSC_32KHZ 0x80 /* internal 32 KHz rcosc */
32 | #endif
33 |
34 | #define HAL_CLOCK_STABLE()
35 |
36 | /* ------------------------------------------------------------------------------------------------
37 | * Key Release detect support
38 | * ------------------------------------------------------------------------------------------------
39 | */
40 | #define HAL_KEY_CODE_NOKEY 0xff
41 |
42 |
43 | /* ------------------------------------------------------------------------------------------------
44 | * LED Configuration
45 | * ------------------------------------------------------------------------------------------------
46 | */
47 |
48 | // TODO: review all HAL_BOARD_CC2530EB_REV17 and replace with HAL_BOARD_CC2530RC
49 | // if applicable.
50 | #define HAL_NUM_LEDS 0
51 |
52 | #define HAL_LED_BLINK_DELAY() st( { volatile uint32 i; for (i=0; i<0x5800; i++) { }; } )
53 | #define ACTIVE_LOW !
54 | #define ACTIVE_HIGH !! /* double negation forces result to be '1' */
55 |
56 | /* ------------------------------------------------------------------------------------------------
57 | * OSAL NV implemented by internal flash pages.
58 | * ------------------------------------------------------------------------------------------------
59 | */
60 |
61 | // Flash is partitioned into 8 banks of 32 KB or 16 pages.
62 | #define HAL_FLASH_PAGE_PER_BANK 16
63 | // Flash is constructed of 128 pages of 2 KB.
64 | #define HAL_FLASH_PAGE_SIZE 2048
65 | #define HAL_FLASH_WORD_SIZE 4
66 |
67 | // CODE banks get mapped into the XDATA range 8000-FFFF.
68 | #define HAL_FLASH_PAGE_MAP 0x8000
69 |
70 | // The last 16 bytes of the last available page are reserved for flash lock bits.
71 | // NV page definitions must coincide with segment declaration in project *.xcl file.
72 | #if defined NON_BANKED
73 | #define HAL_FLASH_LOCK_BITS 16
74 | #define HAL_NV_PAGE_END 30
75 | #define HAL_NV_PAGE_CNT 2
76 | #else
77 | #define HAL_FLASH_LOCK_BITS 16
78 | #define HAL_NV_PAGE_END 126
79 | #define HAL_NV_PAGE_CNT 6
80 | #endif
81 |
82 | // Re-defining Z_EXTADDR_LEN here so as not to include a Z-Stack .h file.
83 | #define HAL_FLASH_IEEE_SIZE 8
84 | #define HAL_FLASH_IEEE_PAGE (HAL_NV_PAGE_END+1)
85 | #define HAL_FLASH_IEEE_OSET (HAL_FLASH_PAGE_SIZE - HAL_FLASH_LOCK_BITS - HAL_FLASH_IEEE_SIZE)
86 | #define HAL_INFOP_IEEE_OSET 0xC
87 |
88 | #define HAL_FLASH_DEV_PRIVATE_KEY_OSET 0x7D2
89 | #define HAL_FLASH_CA_PUBLIC_KEY_OSET 0x7BC
90 | #define HAL_FLASH_IMPLICIT_CERT_OSET 0x78C
91 |
92 | #define HAL_NV_PAGE_BEG (HAL_NV_PAGE_END-HAL_NV_PAGE_CNT+1)
93 | // Used by DMA macros to shift 1 to create a mask for DMA registers.
94 | #define HAL_NV_DMA_CH 0
95 | #define HAL_DMA_CH_RX 3
96 | #define HAL_DMA_CH_TX 4
97 |
98 | #define HAL_NV_DMA_GET_DESC() HAL_DMA_GET_DESC0()
99 | #define HAL_NV_DMA_SET_ADDR(a) HAL_DMA_SET_ADDR_DESC0((a))
100 |
101 | /* ------------------------------------------------------------------------------------------------
102 | * Serial Boot Loader: reserving the first 4 pages of flash and other memory in cc2530-sb.xcl.
103 | * ------------------------------------------------------------------------------------------------
104 | */
105 |
106 | #define HAL_SB_IMG_ADDR 0x2000
107 | #define HAL_SB_CRC_ADDR 0x2090
108 | // Size of internal flash less 4 pages for boot loader, 6 pages for NV, & 1 page for lock bits.
109 | #define HAL_SB_IMG_SIZE (0x40000 - 0x2000 - 0x3000 - 0x0800)
110 |
111 | /* ------------------------------------------------------------------------------------------------
112 | * Macros
113 | * ------------------------------------------------------------------------------------------------
114 | */
115 |
116 | /* ----------- RF-frontend Connection Initialization ---------- */
117 | #if defined HAL_PA_LNA || defined HAL_PA_LNA_CC2590
118 | extern void MAC_RfFrontendSetup(void);
119 | #define HAL_BOARD_RF_FRONTEND_SETUP() MAC_RfFrontendSetup()
120 | #else
121 | #define HAL_BOARD_RF_FRONTEND_SETUP()
122 | #endif
123 |
124 |
125 | /* ------------------------------------------------------------------------------------------------
126 | * Macros
127 | * ------------------------------------------------------------------------------------------------
128 | */
129 |
130 | #define CLKCONCMD_VALUE (CLKCONCMD_32MHZ | OSC_32KHZ)
131 |
132 | /* ----------- Cache Prefetch control ---------- */
133 | #define PREFETCH_ENABLE() st( FCTL = 0x08; )
134 | #define PREFETCH_DISABLE() st( FCTL = 0x04; )
135 |
136 | /* ----------- Board Initialization ---------- */
137 | #define HAL_BOARD_INIT() \
138 | { \
139 | uint16 i; \
140 | \
141 | SLEEPCMD &= ~OSC_PD; /* turn on 16MHz RC and 32MHz XOSC */ \
142 | while (!(SLEEPSTA & XOSC_STB)); /* wait for 32MHz XOSC stable */ \
143 | asm("NOP"); /* chip bug workaround */ \
144 | for (i=0; i<504; i++) asm("NOP"); /* Require 63us delay for all revs */ \
145 | CLKCONCMD = CLKCONCMD_VALUE; /* Select 32MHz XOSC and the source for 32K clock */ \
146 | while (CLKCONSTA != CLKCONCMD_VALUE); /* Wait for the change to be effective */ \
147 | SLEEPCMD |= OSC_PD; /* turn off 16MHz RC */ \
148 | \
149 | /* Turn on cache prefetch mode */ \
150 | PREFETCH_ENABLE(); \
151 | HAL_TURN_OFF_LED1(); \
152 | LED1_DDR |= LED1_BV; \
153 | LED4_DDR |= LED4_BV; \
154 | }
155 |
156 | /* ----------- Debounce ---------- */
157 | #define HAL_DEBOUNCE(expr) { int i; for (i=0; i<500; i++) { if (!(expr)) i = 0; } }
158 |
159 | /* ----------- Push Buttons ---------- */
160 | #define HAL_PUSH_BUTTON1() (0)
161 | #define HAL_PUSH_BUTTON2() (0)
162 | #define HAL_PUSH_BUTTON3() (0)
163 | #define HAL_PUSH_BUTTON4() (0)
164 | #define HAL_PUSH_BUTTON5() (0)
165 | #define HAL_PUSH_BUTTON6() (0)
166 |
167 | /* ----------- LED's ---------- */
168 |
169 | #if defined(HAL_BOARD_TARGET)
170 | #define LED1_BV BV(1)
171 | #define LED1_SBIT P0_1
172 | #define LED1_DDR P0DIR
173 | #define LED1_POLARITY ACTIVE_HIGH
174 |
175 | #elif defined(HAL_BOARD_CHDTECH_DEV)
176 | #define LED1_BV BV(0)
177 | #define LED1_SBIT P1_0
178 | #define LED1_DDR P1DIR
179 | #define LED1_POLARITY ACTIVE_LOW
180 | #endif
181 |
182 | //power pin
183 | #define LED4_BV BV(1)
184 | #define LED4_SBIT P1_1
185 | #define LED4_DDR P1DIR
186 | #define LED4_POLARITY ACTIVE_HIGH
187 |
188 | #define HAL_TURN_OFF_LED1() st( LED1_SBIT = LED1_POLARITY (0); )
189 | #define HAL_TURN_OFF_LED2() asm("NOP")
190 | #define HAL_TURN_OFF_LED3() asm("NOP")
191 | #define HAL_TURN_OFF_LED4() st( LED4_SBIT = LED4_POLARITY (0); )
192 |
193 | #define HAL_TURN_ON_LED1() st( LED1_SBIT = LED1_POLARITY (1); )
194 | #define HAL_TURN_ON_LED2() asm("NOP")
195 | #define HAL_TURN_ON_LED3() asm("NOP")
196 | #define HAL_TURN_ON_LED4() st( LED4_SBIT = LED4_POLARITY (1); )
197 |
198 | #define HAL_TOGGLE_LED1() st( if (LED1_SBIT) { LED1_SBIT = 0; } else { LED1_SBIT = 1;} )
199 | #define HAL_TOGGLE_LED2() asm("NOP")
200 | #define HAL_TOGGLE_LED3() asm("NOP")
201 | #define HAL_TOGGLE_LED4() st( if (LED4_SBIT) { LED4_SBIT = 0; } else { LED4_SBIT = 1;} )
202 |
203 | #define HAL_STATE_LED1() (LED1_POLARITY (LED1_SBIT))
204 | #define HAL_STATE_LED2() 0
205 | #define HAL_STATE_LED3() 0
206 | #define HAL_STATE_LED4() (LED4_POLARITY (LED4_SBIT))
207 |
208 | /* ----------- Minimum safe bus voltage ---------- */
209 |
210 | // Vdd/3 / Internal Reference X ENOB --> (Vdd / 3) / 1.15 X 127
211 | #define VDD_2_0 74 // 2.0 V required to safely read/write internal flash.
212 | #define VDD_2_7 100 // 2.7 V required for the Numonyx device.
213 |
214 | #define VDD_MIN_RUN VDD_2_0
215 | #define VDD_MIN_NV (VDD_2_0+4) // 5% margin over minimum to survive a page erase and compaction.
216 | #define VDD_MIN_GOOD (VDD_2_0+8) // 10% margin over minimum to survive a page erase and compaction.
217 | #define VDD_MIN_XNV (VDD_2_7+5) // 5% margin over minimum to survive a page erase and compaction.
218 |
219 | /* ------------------------------------------------------------------------------------------------
220 | * Driver Configuration
221 | * ------------------------------------------------------------------------------------------------
222 | */
223 |
224 | /* Set to TRUE enable H/W TIMER usage, FALSE disable it */
225 | #ifndef HAL_TIMER
226 | #define HAL_TIMER FALSE
227 | #endif
228 |
229 | /* Set to TRUE enable ADC usage, FALSE disable it */
230 | #ifndef HAL_ADC
231 | #define HAL_ADC TRUE
232 | #endif
233 |
234 | /* Set to TRUE enable DMA usage, FALSE disable it */
235 | #ifndef HAL_DMA
236 | #define HAL_DMA TRUE
237 | #endif
238 |
239 | /* Set to TRUE enable Flash access, FALSE disable it */
240 | #ifndef HAL_FLASH
241 | #define HAL_FLASH TRUE
242 | #endif
243 |
244 | /* Set to TRUE enable AES usage, FALSE disable it */
245 | #ifndef HAL_AES
246 | #define HAL_AES TRUE
247 | #endif
248 |
249 | #ifndef HAL_AES_DMA
250 | #define HAL_AES_DMA FALSE
251 | #endif
252 |
253 | /* Set to TRUE enable LCD usage, FALSE disable it */
254 | #ifndef HAL_LCD
255 | #define HAL_LCD FALSE
256 | #endif
257 |
258 | /* Set to TRUE enable LED usage, FALSE disable it */
259 | #ifndef HAL_LED
260 | #define HAL_LED FALSE
261 | #endif
262 | #if (!defined BLINK_LEDS) && (HAL_LED == TRUE)
263 | #define BLINK_LEDS
264 | #endif
265 |
266 | #ifndef HAL_MOTION
267 | #define HAL_MOTION FASLE
268 | #endif
269 |
270 | /* Set to TRUE enable KEY usage, FALSE disable it */
271 | #ifndef HAL_KEY
272 | #define HAL_KEY TRUE
273 | #endif
274 |
275 | /* Set to TRUE enable UART usage, FALSE disable it */
276 | #ifndef HAL_UART
277 | #define HAL_UART FALSE
278 | #endif
279 |
280 | #if HAL_UART
281 | #ifndef HAL_UART_DMA
282 | #if HAL_DMA
283 | #if (defined ZAPP_P2) || (defined ZTOOL_P2)
284 | #define HAL_UART_DMA 2
285 | #else
286 | #define HAL_UART_DMA 1
287 | #endif
288 | #else
289 | #define HAL_UART_DMA 0
290 | #endif
291 | #endif
292 |
293 | #ifndef HAL_UART_ISR
294 | #if HAL_UART_DMA // Default preference for DMA over ISR.
295 | #define HAL_UART_ISR 0
296 | #elif (defined ZAPP_P2) || (defined ZTOOL_P2)
297 | #define HAL_UART_ISR 2
298 | #else
299 | #define HAL_UART_ISR 1
300 | #endif
301 | #endif
302 |
303 | #if (HAL_UART_DMA && (HAL_UART_DMA == HAL_UART_ISR))
304 | #error HAL_UART_DMA & HAL_UART_ISR must be different.
305 | #endif
306 |
307 | // Used to set P2 priority - USART0 over USART1 if both are defined.
308 | #if ((HAL_UART_DMA == 1) || (HAL_UART_ISR == 1))
309 | #define HAL_UART_PRIPO 0x00
310 | #else
311 | #define HAL_UART_PRIPO 0x40
312 | #endif
313 |
314 | #else
315 | #define HAL_UART_DMA 0
316 | #define HAL_UART_ISR 0
317 | #endif
318 |
319 | /* USB is not used for CC2530 configuration */
320 | #define HAL_UART_USB 0
321 |
322 | #ifndef HAL_BUZZER
323 | #define HAL_BUZZER TRUE
324 | #endif
325 |
326 | /*******************************************************************************************************
327 | */
328 | #endif
329 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/CC2530DB/GenericApp.ewp:
--------------------------------------------------------------------------------
1 |
2 |
3 | 3
4 |
5 | CHDTECH_DEV
6 |
7 | 8051
8 |
9 | 1
10 |
11 | General
12 | 4
13 |
14 | 9
15 | 1
16 | 1
17 |
22 |
27 |
32 |
37 |
42 |
47 |
51 |
55 |
59 |
64 |
69 |
73 |
77 |
82 |
86 |
90 |
94 |
98 |
102 |
106 |
110 |
114 |
118 |
122 |
126 |
130 |
134 |
138 |
142 |
147 |
151 |
156 |
160 |
164 |
168 |
172 |
176 |
180 |
184 |
188 |
192 |
196 |
200 |
204 |
209 |
213 |
217 |
221 |
225 |
230 |
235 |
240 |
244 |
248 |
252 |
256 |
260 |
264 |
268 |
272 |
276 |
280 |
284 |
285 |
286 |
287 | ICC8051
288 | 7
289 |
290 | 12
291 | 1
292 | 1
293 |
297 |
302 |
306 |
310 |
314 |
318 |
322 |
326 |
330 |
334 |
338 |
342 |
346 |
350 |
354 |
358 |
362 |
366 |
370 |
374 |
378 |
382 |
386 |
390 |
394 |
398 |
402 |
406 |
410 |
414 |
418 |
422 |
426 |
430 |
434 |
438 |
442 |
446 |
450 |
454 |
458 |
462 |
468 |
498 |
502 |
507 |
511 |
515 |
519 |
523 |
528 |
532 |
537 |
541 |
545 |
549 |
553 |
557 |
561 |
565 |
569 |
573 |
578 |
583 |
584 |
585 |
586 | A8051
587 | 2
588 |
589 | 6
590 | 1
591 | 1
592 |
596 |
600 |
604 |
608 |
612 |
617 |
621 |
625 |
629 |
633 |
637 |
641 |
645 |
649 |
653 |
657 |
661 |
665 |
669 |
673 |
677 |
681 |
685 |
689 |
693 |
697 |
701 |
705 |
709 |
713 |
717 |
721 |
725 |
729 |
733 |
737 |
738 |
739 |
740 | CUSTOM
741 | 3
742 |
743 |
744 |
745 | 0
746 |
747 |
748 |
749 | BICOMP
750 | 0
751 |
752 |
753 |
754 | BUILDACTION
755 | 1
756 |
757 | Python.exe "$PROJ_DIR$\..\ver.py"
758 |
759 |
760 |
761 |
762 | XLINK
763 | 4
764 |
765 | 21
766 | 1
767 | 1
768 |
772 |
776 |
780 |
785 |
790 |
794 |
798 |
802 |
806 |
810 |
814 |
818 |
822 |
826 |
830 |
834 |
838 |
842 |
846 |
850 |
854 |
858 |
862 |
866 |
870 |
874 |
878 |
882 |
886 |
890 |
895 |
899 |
903 |
908 |
912 |
916 |
920 |
924 |
928 |
933 |
938 |
942 |
946 |
950 |
954 |
958 |
962 |
966 |
970 |
974 |
978 |
983 |
988 |
992 |
996 |
1000 |
1004 |
1008 |
1012 |
1016 |
1020 |
1024 |
1028 |
1032 |
1036 |
1040 |
1044 |
1048 |
1052 |
1056 |
1060 |
1064 |
1070 |
1074 |
1078 |
1082 |
1087 |
1091 |
1095 |
1099 |
1103 |
1107 |
1111 |
1112 |
1113 |
1114 | XAR
1115 | 2
1116 |
1117 | 1
1118 | 1
1119 | 1
1120 |
1124 |
1128 |
1132 |
1133 |
1134 |
1135 | HWMUL
1136 | 0
1137 |
1138 |
1139 |
1140 | BILINK
1141 | 0
1142 |
1143 |
1144 |
1145 |
1146 | DIYRuZ_Reed
1147 |
1148 | 8051
1149 |
1150 | 0
1151 |
1152 | General
1153 | 4
1154 |
1155 | 9
1156 | 1
1157 | 0
1158 |
1163 |
1168 |
1173 |
1178 |
1183 |
1188 |
1192 |
1196 |
1200 |
1205 |
1210 |
1214 |
1218 |
1223 |
1227 |
1231 |
1235 |
1239 |
1243 |
1247 |
1251 |
1255 |
1259 |
1263 |
1267 |
1271 |
1275 |
1279 |
1283 |
1288 |
1292 |
1297 |
1301 |
1305 |
1309 |
1313 |
1317 |
1321 |
1325 |
1329 |
1333 |
1337 |
1341 |
1345 |
1350 |
1354 |
1358 |
1362 |
1366 |
1371 |
1376 |
1381 |
1385 |
1389 |
1393 |
1397 |
1401 |
1405 |
1409 |
1413 |
1417 |
1421 |
1425 |
1426 |
1427 |
1428 | ICC8051
1429 | 7
1430 |
1431 | 12
1432 | 1
1433 | 0
1434 |
1438 |
1443 |
1447 |
1451 |
1455 |
1459 |
1463 |
1467 |
1471 |
1475 |
1479 |
1483 |
1487 |
1491 |
1495 |
1499 |
1503 |
1507 |
1511 |
1515 |
1519 |
1523 |
1527 |
1531 |
1535 |
1539 |
1543 |
1547 |
1551 |
1555 |
1559 |
1563 |
1567 |
1571 |
1575 |
1579 |
1583 |
1587 |
1591 |
1595 |
1599 |
1603 |
1609 |
1638 |
1642 |
1647 |
1651 |
1655 |
1659 |
1663 |
1668 |
1672 |
1677 |
1681 |
1685 |
1689 |
1693 |
1697 |
1701 |
1705 |
1709 |
1713 |
1718 |
1723 |
1724 |
1725 |
1726 | A8051
1727 | 2
1728 |
1729 | 6
1730 | 1
1731 | 0
1732 |
1736 |
1740 |
1744 |
1748 |
1752 |
1757 |
1761 |
1765 |
1769 |
1773 |
1777 |
1781 |
1785 |
1789 |
1793 |
1797 |
1801 |
1805 |
1809 |
1813 |
1817 |
1821 |
1825 |
1829 |
1833 |
1837 |
1841 |
1845 |
1849 |
1853 |
1857 |
1861 |
1865 |
1869 |
1873 |
1877 |
1878 |
1879 |
1880 | CUSTOM
1881 | 3
1882 |
1883 |
1884 |
1885 | 0
1886 |
1887 |
1888 |
1889 | BICOMP
1890 | 0
1891 |
1892 |
1893 |
1894 | BUILDACTION
1895 | 1
1896 |
1897 | Python.exe "$PROJ_DIR$\..\ver.py"
1898 |
1899 |
1900 |
1901 |
1902 | XLINK
1903 | 4
1904 |
1905 | 21
1906 | 1
1907 | 0
1908 |
1912 |
1916 |
1920 |
1925 |
1930 |
1934 |
1938 |
1942 |
1946 |
1950 |
1954 |
1958 |
1962 |
1966 |
1970 |
1974 |
1978 |
1982 |
1986 |
1990 |
1994 |
1998 |
2002 |
2006 |
2010 |
2014 |
2018 |
2022 |
2026 |
2030 |
2035 |
2039 |
2043 |
2048 |
2052 |
2056 |
2060 |
2064 |
2068 |
2073 |
2078 |
2082 |
2086 |
2090 |
2094 |
2098 |
2102 |
2106 |
2110 |
2114 |
2118 |
2123 |
2128 |
2132 |
2136 |
2140 |
2144 |
2148 |
2152 |
2156 |
2160 |
2164 |
2168 |
2172 |
2176 |
2180 |
2184 |
2188 |
2192 |
2196 |
2200 |
2204 |
2210 |
2214 |
2218 |
2222 |
2227 |
2231 |
2235 |
2239 |
2243 |
2247 |
2251 |
2252 |
2253 |
2254 | XAR
2255 | 2
2256 |
2257 | 1
2258 | 1
2259 | 0
2260 |
2264 |
2268 |
2272 |
2273 |
2274 |
2275 | HWMUL
2276 | 0
2277 |
2278 |
2279 |
2280 | BILINK
2281 | 0
2282 |
2283 |
2284 |
2285 |
2286 | App
2287 |
2288 | $PROJ_DIR$\..\zstack-lib\hal_key.c
2289 |
2290 |
2291 | $PROJ_DIR$\..\zstack-lib\hal_key.h
2292 |
2293 |
2294 | $PROJ_DIR$\..\Source\OSAL_App.c
2295 |
2296 |
2297 | $PROJ_DIR$\..\Source\preinclude.h
2298 |
2299 |
2300 | $PROJ_DIR$\..\Source\stdint.h
2301 |
2302 |
2303 | $PROJ_DIR$\..\Source\version.c
2304 |
2305 |
2306 | $PROJ_DIR$\..\Source\version.h
2307 |
2308 |
2309 | $PROJ_DIR$\..\Source\zcl_app.c
2310 |
2311 |
2312 | $PROJ_DIR$\..\Source\zcl_app.h
2313 |
2314 |
2315 | $PROJ_DIR$\..\Source\zcl_app_data.c
2316 |
2317 |
2318 |
2319 | BDB
2320 |
2321 | $PROJ_DIR$\..\..\..\..\..\Components\stack\bdb\bdb.c
2322 |
2323 |
2324 | $PROJ_DIR$\..\..\..\..\..\Components\stack\bdb\bdb.h
2325 |
2326 |
2327 | $PROJ_DIR$\..\..\..\..\..\Components\stack\bdb\bdb_FindingAndBinding.c
2328 |
2329 |
2330 | $PROJ_DIR$\..\..\..\..\..\Components\stack\bdb\bdb_interface.h
2331 |
2332 |
2333 | $PROJ_DIR$\..\..\..\..\..\Components\stack\bdb\bdb_Reporting.c
2334 |
2335 |
2336 | $PROJ_DIR$\..\..\..\..\..\Components\stack\bdb\bdb_Reporting.h
2337 |
2338 |
2339 | $PROJ_DIR$\..\..\..\..\..\Components\stack\bdb\bdb_tlCommissioning.c
2340 |
2341 |
2342 | $PROJ_DIR$\..\..\..\..\..\Components\stack\bdb\bdb_tlCommissioning.h
2343 |
2344 |
2345 | $PROJ_DIR$\..\..\..\..\..\Components\stack\bdb\bdb_touchlink.c
2346 |
2347 |
2348 | $PROJ_DIR$\..\..\..\..\..\Components\stack\bdb\bdb_touchlink.h
2349 |
2350 |
2351 | $PROJ_DIR$\..\..\..\..\..\Components\stack\bdb\bdb_touchlink_initiator.c
2352 |
2353 |
2354 | $PROJ_DIR$\..\..\..\..\..\Components\stack\bdb\bdb_touchlink_initiator.h
2355 |
2356 |
2357 |
2358 | HAL
2359 |
2360 | Common
2361 |
2362 | $PROJ_DIR$\..\..\..\..\..\Components\hal\common\hal_assert.c
2363 |
2364 |
2365 | $PROJ_DIR$\..\..\..\..\..\Components\hal\common\hal_drivers.c
2366 |
2367 |
2368 |
2369 | Include
2370 |
2371 | $PROJ_DIR$\..\Source\hal\ds18b20.h
2372 |
2373 |
2374 | $PROJ_DIR$\..\..\..\..\..\Components\hal\include\hal_adc.h
2375 |
2376 |
2377 | $PROJ_DIR$\..\..\..\..\..\Components\hal\include\hal_assert.h
2378 |
2379 |
2380 | $PROJ_DIR$\..\..\..\..\..\Components\hal\include\hal_board.h
2381 |
2382 |
2383 | $PROJ_DIR$\..\Source\hal_board_cfg.h
2384 |
2385 |
2386 | $PROJ_DIR$\..\..\..\..\..\Components\hal\include\hal_defs.h
2387 |
2388 |
2389 | $PROJ_DIR$\..\..\..\..\..\Components\hal\include\hal_drivers.h
2390 |
2391 |
2392 | $PROJ_DIR$\..\..\..\..\..\Components\hal\include\hal_flash.h
2393 |
2394 |
2395 | $PROJ_DIR$\..\..\..\..\..\Components\hal\include\hal_lcd.h
2396 |
2397 |
2398 | $PROJ_DIR$\..\..\..\..\..\Components\hal\include\hal_led.h
2399 |
2400 |
2401 | $PROJ_DIR$\..\..\..\..\..\Components\hal\include\hal_sleep.h
2402 |
2403 |
2404 | $PROJ_DIR$\..\..\..\..\..\Components\hal\include\hal_timer.h
2405 |
2406 |
2407 | $PROJ_DIR$\..\..\..\..\..\Components\hal\include\hal_uart.h
2408 |
2409 |
2410 |
2411 | Target
2412 |
2413 | CC2530EB
2414 |
2415 | Config
2416 |
2417 |
2418 | Drivers
2419 |
2420 | $PROJ_DIR$\..\..\..\..\..\Components\hal\target\CC2530EB\hal_adc.c
2421 |
2422 |
2423 | $PROJ_DIR$\..\..\..\..\..\Components\hal\target\CC2530EB\hal_dma.c
2424 |
2425 |
2426 | $PROJ_DIR$\..\..\..\..\..\Components\hal\target\CC2530EB\hal_flash.c
2427 |
2428 |
2429 | $PROJ_DIR$\..\..\..\..\..\Components\hal\target\CC2530EB\hal_lcd.c
2430 |
2431 |
2432 | $PROJ_DIR$\..\..\..\..\..\Components\hal\target\CC2530EB\hal_led.c
2433 |
2434 |
2435 | $PROJ_DIR$\..\..\..\..\..\Components\hal\target\CC2530EB\hal_sleep.c
2436 |
2437 |
2438 | $PROJ_DIR$\..\..\..\..\..\Components\hal\target\CC2530EB\hal_startup.c
2439 |
2440 |
2441 | $PROJ_DIR$\..\..\..\..\..\Components\hal\target\CC2530EB\hal_timer.c
2442 |
2443 |
2444 | $PROJ_DIR$\..\..\..\..\..\Components\hal\target\CC2530EB\hal_uart.c
2445 |
2446 |
2447 |
2448 | Includes
2449 |
2450 | $PROJ_DIR$\..\..\..\..\..\Components\hal\target\CC2530EB\hal_aes.h
2451 |
2452 |
2453 | $PROJ_DIR$\..\..\..\..\..\Components\hal\target\CC2530EB\hal_ccm.h
2454 |
2455 |
2456 | $PROJ_DIR$\..\..\..\..\..\Components\hal\target\CC2530EB\hal_dma.h
2457 |
2458 |
2459 | $PROJ_DIR$\..\..\..\..\..\Components\hal\target\CC2530EB\hal_mcu.h
2460 |
2461 |
2462 | $PROJ_DIR$\..\..\..\..\..\Components\hal\target\CC2530EB\hal_types.h
2463 |
2464 |
2465 |
2466 |
2467 |
2468 |
2469 | MAC
2470 |
2471 | High Level
2472 |
2473 | $PROJ_DIR$\..\..\..\..\..\Components\mac\high_level\mac_cfg.c
2474 |
2475 |
2476 | $PROJ_DIR$\..\..\..\..\..\Components\mac\high_level\mac_high_level.h
2477 |
2478 |
2479 | $PROJ_DIR$\..\..\..\..\..\Components\mac\high_level\mac_pib.c
2480 |
2481 |
2482 | $PROJ_DIR$\..\..\..\..\..\Components\mac\high_level\mac_pib.h
2483 |
2484 |
2485 | $PROJ_DIR$\..\..\..\..\..\Components\mac\high_level\mac_spec.h
2486 |
2487 |
2488 |
2489 | Include
2490 |
2491 | $PROJ_DIR$\..\..\..\..\..\Components\mac\include\mac_api.h
2492 |
2493 |
2494 |
2495 | Low Level
2496 |
2497 | Common
2498 |
2499 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_assert.h
2500 |
2501 |
2502 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_autopend.c
2503 |
2504 |
2505 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_autopend.h
2506 |
2507 |
2508 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_backoff_timer.c
2509 |
2510 |
2511 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_backoff_timer.h
2512 |
2513 |
2514 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_low_level.c
2515 |
2516 |
2517 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_low_level.h
2518 |
2519 |
2520 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_radio.c
2521 |
2522 |
2523 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_radio.h
2524 |
2525 |
2526 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_rx.c
2527 |
2528 |
2529 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_rx.h
2530 |
2531 |
2532 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_rx_onoff.c
2533 |
2534 |
2535 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_rx_onoff.h
2536 |
2537 |
2538 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_sleep.c
2539 |
2540 |
2541 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_sleep.h
2542 |
2543 |
2544 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_tx.c
2545 |
2546 |
2547 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\mac_tx.h
2548 |
2549 |
2550 |
2551 | System
2552 |
2553 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\single_chip\mac_csp_tx.c
2554 |
2555 |
2556 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\single_chip\mac_csp_tx.h
2557 |
2558 |
2559 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\single_chip\mac_mcu.c
2560 |
2561 |
2562 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\single_chip\mac_mcu.h
2563 |
2564 |
2565 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\single_chip\mac_mem.c
2566 |
2567 |
2568 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\single_chip\mac_mem.h
2569 |
2570 |
2571 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\single_chip\mac_radio_defs.c
2572 |
2573 |
2574 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\single_chip\mac_radio_defs.h
2575 |
2576 |
2577 | $PROJ_DIR$\..\..\..\..\..\Components\mac\low_level\srf04\single_chip\mac_rffrontend.c
2578 |
2579 |
2580 |
2581 |
2582 |
2583 | MT
2584 |
2585 | $PROJ_DIR$\..\..\..\..\..\Components\mt\DebugTrace.c
2586 |
2587 |
2588 | $PROJ_DIR$\..\..\..\..\..\Components\mt\DebugTrace.h
2589 |
2590 |
2591 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT.c
2592 |
2593 |
2594 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT.h
2595 |
2596 |
2597 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_AF.c
2598 |
2599 |
2600 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_AF.h
2601 |
2602 |
2603 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_APP.c
2604 |
2605 |
2606 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_APP.h
2607 |
2608 |
2609 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_APP_CONFIG.c
2610 |
2611 |
2612 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_APP_CONFIG.h
2613 |
2614 |
2615 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_DEBUG.c
2616 |
2617 |
2618 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_DEBUG.h
2619 |
2620 |
2621 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_GP.c
2622 |
2623 |
2624 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_GP.h
2625 |
2626 |
2627 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_NWK.c
2628 |
2629 |
2630 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_NWK.h
2631 |
2632 |
2633 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_RPC.h
2634 |
2635 |
2636 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_SAPI.c
2637 |
2638 |
2639 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_SAPI.h
2640 |
2641 |
2642 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_SYS.c
2643 |
2644 |
2645 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_SYS.h
2646 |
2647 |
2648 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_TASK.c
2649 |
2650 |
2651 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_TASK.h
2652 |
2653 |
2654 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_UART.c
2655 |
2656 |
2657 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_UART.h
2658 |
2659 |
2660 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_UTIL.c
2661 |
2662 |
2663 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_UTIL.h
2664 |
2665 |
2666 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_VERSION.c
2667 |
2668 |
2669 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_VERSION.h
2670 |
2671 |
2672 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_ZDO.c
2673 |
2674 |
2675 | $PROJ_DIR$\..\..\..\..\..\Components\mt\MT_ZDO.h
2676 |
2677 |
2678 |
2679 | NWK
2680 |
2681 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\AddrMgr.h
2682 |
2683 |
2684 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\APS.h
2685 |
2686 |
2687 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\aps_frag.h
2688 |
2689 |
2690 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\aps_groups.h
2691 |
2692 |
2693 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\aps_util.h
2694 |
2695 |
2696 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\APSMEDE.h
2697 |
2698 |
2699 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\AssocList.h
2700 |
2701 |
2702 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\BindingTable.c
2703 |
2704 |
2705 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\BindingTable.h
2706 |
2707 |
2708 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\NLMEDE.h
2709 |
2710 |
2711 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\nwk.h
2712 |
2713 |
2714 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\nwk_bufs.h
2715 |
2716 |
2717 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\nwk_globals.c
2718 |
2719 |
2720 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\nwk_globals.h
2721 |
2722 |
2723 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\nwk_util.h
2724 |
2725 |
2726 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\reflecttrack.h
2727 |
2728 |
2729 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\rtg.h
2730 |
2731 |
2732 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\stub_aps.c
2733 |
2734 |
2735 | $PROJ_DIR$\..\..\..\..\..\Components\stack\nwk\stub_aps.h
2736 |
2737 |
2738 | $PROJ_DIR$\..\..\..\..\..\Components\stack\sys\ZDiags.c
2739 |
2740 |
2741 | $PROJ_DIR$\..\..\..\..\..\Components\stack\sys\ZDiags.h
2742 |
2743 |
2744 | $PROJ_DIR$\..\..\..\..\..\Components\stack\sys\ZGlobals.c
2745 |
2746 |
2747 | $PROJ_DIR$\..\..\..\..\..\Components\stack\sys\ZGlobals.h
2748 |
2749 |
2750 |
2751 | OSAL
2752 |
2753 | $PROJ_DIR$\..\..\..\..\..\Components\osal\include\comdef.h
2754 |
2755 |
2756 | $PROJ_DIR$\..\..\..\..\..\Components\osal\common\OSAL.c
2757 |
2758 |
2759 | $PROJ_DIR$\..\..\..\..\..\Components\osal\include\OSAL.h
2760 |
2761 |
2762 | $PROJ_DIR$\..\..\..\..\..\Components\osal\common\OSAL_Clock.c
2763 |
2764 |
2765 | $PROJ_DIR$\..\..\..\..\..\Components\osal\include\OSAL_Clock.h
2766 |
2767 |
2768 | $PROJ_DIR$\..\..\..\..\..\Components\osal\mcu\cc2530\OSAL_Math.s51
2769 |
2770 |
2771 | $PROJ_DIR$\..\..\..\..\..\Components\osal\common\OSAL_Memory.c
2772 |
2773 |
2774 | $PROJ_DIR$\..\..\..\..\..\Components\osal\include\OSAL_Memory.h
2775 |
2776 |
2777 | $PROJ_DIR$\..\..\..\..\..\Components\osal\mcu\cc2530\OSAL_Nv.c
2778 |
2779 |
2780 | $PROJ_DIR$\..\..\..\..\..\Components\osal\include\OSAL_Nv.h
2781 |
2782 |
2783 | $PROJ_DIR$\..\..\..\..\..\Components\osal\common\OSAL_PwrMgr.c
2784 |
2785 |
2786 | $PROJ_DIR$\..\..\..\..\..\Components\osal\include\OSAL_PwrMgr.h
2787 |
2788 |
2789 | $PROJ_DIR$\..\..\..\..\..\Components\osal\include\OSAL_Tasks.h
2790 |
2791 |
2792 | $PROJ_DIR$\..\..\..\..\..\Components\osal\common\OSAL_Timers.c
2793 |
2794 |
2795 | $PROJ_DIR$\..\..\..\..\..\Components\osal\include\OSAL_Timers.h
2796 |
2797 |
2798 | $PROJ_DIR$\..\..\..\..\..\Components\osal\include\ZComDef.h
2799 |
2800 |
2801 |
2802 | Profile
2803 |
2804 | $PROJ_DIR$\..\..\..\..\..\Components\stack\af\AF.c
2805 |
2806 |
2807 | $PROJ_DIR$\..\..\..\..\..\Components\stack\af\AF.h
2808 |
2809 |
2810 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zcl\zcl.c
2811 |
2812 |
2813 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zcl\zcl.h
2814 |
2815 |
2816 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zcl\zcl_general.c
2817 |
2818 |
2819 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zcl\zcl_general.h
2820 |
2821 |
2822 | $PROJ_DIR$\..\..\Source\zcl_ha.c
2823 |
2824 |
2825 | $PROJ_DIR$\..\..\Source\zcl_ha.h
2826 |
2827 |
2828 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zcl\zcl_ss.c
2829 |
2830 |
2831 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zcl\zcl_ss.h
2832 |
2833 |
2834 |
2835 | Security
2836 |
2837 | $PROJ_DIR$\..\..\..\..\..\Components\stack\sec\ssp.h
2838 |
2839 |
2840 | $PROJ_DIR$\..\..\..\..\..\Components\stack\sec\ssp_hash.h
2841 |
2842 |
2843 |
2844 | Services
2845 |
2846 | $PROJ_DIR$\..\..\..\..\..\Components\services\saddr\saddr.c
2847 |
2848 |
2849 | $PROJ_DIR$\..\..\..\..\..\Components\services\saddr\saddr.h
2850 |
2851 |
2852 |
2853 | Tools
2854 |
2855 | $PROJ_DIR$\..\..\..\Tools\CC2530DB\f8w2530.xcl
2856 |
2857 |
2858 | $PROJ_DIR$\..\Source\f8wConfig.cfg
2859 |
2860 |
2861 | $PROJ_DIR$\..\..\..\Tools\CC2530DB\f8wCoord.cfg
2862 |
2863 | CHDTECH_DEV
2864 | DIYRuZ_Reed
2865 |
2866 |
2867 |
2868 | $PROJ_DIR$\..\..\..\Tools\CC2530DB\f8wEndev.cfg
2869 |
2870 |
2871 | $PROJ_DIR$\..\..\..\Tools\CC2530DB\f8wRouter.cfg
2872 |
2873 | CHDTECH_DEV
2874 | DIYRuZ_Reed
2875 |
2876 |
2877 |
2878 | $PROJ_DIR$\..\..\..\Tools\CC2530DB\f8wZCL.cfg
2879 |
2880 |
2881 |
2882 | Utils
2883 |
2884 |
2885 | ZDO
2886 |
2887 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zdo\ZDApp.c
2888 |
2889 |
2890 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zdo\ZDApp.h
2891 |
2892 |
2893 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zdo\ZDConfig.c
2894 |
2895 |
2896 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zdo\ZDConfig.h
2897 |
2898 |
2899 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zdo\ZDNwkMgr.c
2900 |
2901 |
2902 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zdo\ZDNwkMgr.h
2903 |
2904 |
2905 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zdo\ZDObject.c
2906 |
2907 |
2908 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zdo\ZDObject.h
2909 |
2910 |
2911 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zdo\ZDProfile.c
2912 |
2913 |
2914 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zdo\ZDProfile.h
2915 |
2916 |
2917 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zdo\ZDSecMgr.c
2918 |
2919 |
2920 | $PROJ_DIR$\..\..\..\..\..\Components\stack\zdo\ZDSecMgr.h
2921 |
2922 |
2923 |
2924 | ZMac
2925 |
2926 | $PROJ_DIR$\..\..\..\..\..\Components\zmac\f8w\zmac.c
2927 |
2928 |
2929 | $PROJ_DIR$\..\..\..\..\..\Components\zmac\ZMAC.h
2930 |
2931 |
2932 | $PROJ_DIR$\..\..\..\..\..\Components\zmac\f8w\zmac_cb.c
2933 |
2934 |
2935 | $PROJ_DIR$\..\..\..\..\..\Components\zmac\f8w\zmac_internal.h
2936 |
2937 |
2938 |
2939 | ZMain
2940 |
2941 | $PROJ_DIR$\..\..\..\ZMain\TI2530DB\chipcon_cstartup.s51
2942 |
2943 |
2944 | $PROJ_DIR$\..\..\..\ZMain\TI2530DB\OnBoard.c
2945 |
2946 |
2947 | $PROJ_DIR$\..\..\..\ZMain\TI2530DB\OnBoard.h
2948 |
2949 |
2950 | $PROJ_DIR$\..\..\..\ZMain\TI2530DB\ZMain.c
2951 |
2952 |
2953 |
2954 | zstack-lib
2955 |
2956 | $PROJ_DIR$\..\zstack-lib\battery.h
2957 |
2958 |
2959 | $PROJ_DIR$\..\zstack-lib\bettery.c
2960 |
2961 |
2962 | $PROJ_DIR$\..\zstack-lib\commissioning.c
2963 |
2964 |
2965 | $PROJ_DIR$\..\zstack-lib\commissioning.h
2966 |
2967 |
2968 | $PROJ_DIR$\..\zstack-lib\Debug.c
2969 |
2970 |
2971 | $PROJ_DIR$\..\zstack-lib\Debug.h
2972 |
2973 |
2974 | $PROJ_DIR$\..\zstack-lib\factory_reset.c
2975 |
2976 |
2977 | $PROJ_DIR$\..\zstack-lib\factory_reset.h
2978 |
2979 |
2980 | $PROJ_DIR$\..\zstack-lib\hal_i2c.c
2981 |
2982 |
2983 | $PROJ_DIR$\..\zstack-lib\hal_i2c.h
2984 |
2985 |
2986 | $PROJ_DIR$\..\zstack-lib\utils.c
2987 |
2988 |
2989 | $PROJ_DIR$\..\zstack-lib\utils.h
2990 |
2991 |
2992 |
2993 |
--------------------------------------------------------------------------------