nanobeacon  2.1.0.0
nanobeacon_adv.h
Go to the documentation of this file.
1 #include "stdint.h"
2 
3 #define RET_OK 0
4 #define RET_ERROR -1
5 #define RET_INVALID_PARAMETER -2
6 
7 typedef struct
8 {
9  uint8_t addr_not_present;
10  uint8_t header_len;
11  uint8_t header[ 4 ];
12 
13 } pkt_f0_t;
14 
15 typedef union
16 {
17  uint8_t timer_sel;
18  uint8_t rand_num_sel;
19  uint8_t sensor_idx;
20  uint8_t mts_offset;
21  uint8_t gpio_sel;
22  uint8_t plsdtct_sel;
23  uint16_t reg_addr;
24 
26 
27 typedef struct
28 {
29  uint8_t data_src;
30  uint8_t endian;
31  uint8_t encryption;
32  uint8_t encryption_last;
33 
34  uint8_t length;
35  uint8_t msb_lsb_sel;
37 
39 
40  uint8_t data_offset;
41 
42 } pkt_f1to7_t;
43 
44 typedef union
45 {
46  struct
47  {
48  uint8_t preamble : 1;
49  uint8_t num_fields : 4;
50  uint8_t sync_pattern_en : 1;
51  uint8_t rsv : 2;
52  } uni;
53  uint8_t data_buf;
54 
56 
57 typedef union
58 {
59  struct
60  {
61  uint8_t cte_en : 1;
62  uint8_t cte_len : 5;
63  uint8_t phy_rate : 2;
64  } uni;
65  uint8_t data_buf;
66 
68 
69 typedef union
70 {
71  struct
72  {
73  uint8_t eax_en : 1;
74  uint8_t key_sel : 2;
75  uint8_t rot_exp : 5;
76  } uni;
77  uint8_t data_buf;
78 
80 
81 typedef struct
82 {
86  uint32_t sync_pattern;
88  uint8_t f1to7_cnt;
89  uint8_t cur_pos;
90  uint8_t *data_buffer;
91  pkt_f1to7_t pkt_f[ 7 ];
92 
93 } pkt_ctl_t;
94 
95 typedef union
96 {
97  struct
98  {
99  uint8_t adv_type : 1;
100  uint8_t trig_source : 6;
101  } uni;
102  uint8_t data_buf;
103 
105 
106 typedef union
107 {
108  struct
109  {
110  uint8_t adv_trig_mode : 2;
111  uint8_t adv_ext_en : 1;
112  uint8_t secondary_adv_exist : 2;
113  uint8_t adv_channel_control : 3;
114  } uni;
115  uint8_t data_buf;
116 
118 
119 typedef union
120 {
121  struct
122  {
123  uint8_t adv_addr_type : 3;
124  uint8_t addr_key_sel : 5;
125  } uni;
126  uint8_t data_buf;
127 
129 
130 typedef struct
131 {
133  uint8_t gpio_source;
134  uint8_t byte2;
135  uint8_t adv_interval[ 3 ];
138  uint8_t evnt_wakeup_period[ 3 ];
139  uint8_t num_event_control[ 2 ];
141  uint8_t adv_addr[ 6 ];
142  uint8_t addr_gen_interval[ 2 ];
144 
145 } adv_ctl_t;
146 
147 typedef enum
148 {
168 
170 
171 typedef enum
172 {
175 
177 
178 typedef enum
179 {
185 
187 
188 typedef enum
189 {
196  ADV_CH_37
197 
199 
201 
202 void nanobeacon_adv_tx_set ( uint32_t tx_interval, adv_channel_ctl_t ch_ctl, adv_mode_t mode );
203 
204 void nanobeacon_adv_address_set ( address_type_t addr_type, uint8_t *mac_addr,
205  uint16_t addr_gen_interval, uint8_t key_idx );
206 
207 int32_t nanobeacon_adv_add_data ( uint8_t* data_in, uint8_t length, uint8_t encrypt_en );
208 
209 int32_t nanobeacon_adv_add_cnt ( uint8_t length, uint8_t big_endian, uint8_t encrypt_en );
210 
211 int32_t nanobeacon_adv_add_sec_cnt ( uint8_t length, uint8_t big_endian, uint8_t encrypt_en );
212 
213 int32_t nanobeacon_adv_add_100ms_cnt ( uint8_t length, uint8_t big_endian, uint8_t encrypt_en );
214 
215 int32_t nanobeacon_adv_add_gpio_stat ( uint8_t encrypt_en );
216 
217 int32_t nanobeacon_adv_add_vcc ( uint8_t length, uint8_t big_endian, uint8_t encrypt_en );
218 
219 int32_t nanobeacon_adv_add_temp ( uint8_t length, uint8_t big_endian, uint8_t encrypt_en );
220 
221 uint16_t nanobeacon_adv_data_to_raw ( uint8_t *buffer );
nanobeacon_adv_add_temp
int32_t nanobeacon_adv_add_temp(uint8_t length, uint8_t big_endian, uint8_t encrypt_en)
pkt_fx_private_t
Definition: nanobeacon_adv.h:16
ADDR_RANDOM_RESOLVABLE
@ ADDR_RANDOM_RESOLVABLE
Definition: nanobeacon_adv.h:182
ADDR_NOT_PRESENT
@ ADDR_NOT_PRESENT
Definition: nanobeacon_adv.h:184
nanobeacon_adv_add_gpio_stat
int32_t nanobeacon_adv_add_gpio_stat(uint8_t encrypt_en)
pkt_ctl_byte0_t
Definition: nanobeacon_adv.h:45
pkt_fx_private_t::mts_offset
uint8_t mts_offset
Definition: nanobeacon_adv.h:20
ADV_DATA_TYPE_PREDEF
@ ADV_DATA_TYPE_PREDEF
Definition: nanobeacon_adv.h:149
adv_ctl_t::pkt_ctl
pkt_ctl_t pkt_ctl
Definition: nanobeacon_adv.h:143
pkt_ctl_byte2_t::data_buf
uint8_t data_buf
Definition: nanobeacon_adv.h:77
pkt_fx_private_t::reg_addr
uint16_t reg_addr
Definition: nanobeacon_adv.h:23
pkt_f1to7_t::uni
pkt_fx_private_t uni
Definition: nanobeacon_adv.h:38
pkt_ctl_byte0_t::num_fields
uint8_t num_fields
Definition: nanobeacon_adv.h:49
pkt_ctl_byte2_t::rot_exp
uint8_t rot_exp
Definition: nanobeacon_adv.h:75
ADV_DATA_TYPE_RAND
@ ADV_DATA_TYPE_RAND
Definition: nanobeacon_adv.h:151
pkt_fx_private_t::sensor_idx
uint8_t sensor_idx
Definition: nanobeacon_adv.h:19
nanobeacon_adv_data_reset
void nanobeacon_adv_data_reset(void)
pkt_f1to7_t::encryption
uint8_t encryption
Definition: nanobeacon_adv.h:31
pkt_ctl_byte0_t::sync_pattern_en
uint8_t sync_pattern_en
Definition: nanobeacon_adv.h:50
ADV_DATA_TYPE_MTS_DATA
@ ADV_DATA_TYPE_MTS_DATA
Definition: nanobeacon_adv.h:156
ADV_CH_37
@ ADV_CH_37
Definition: nanobeacon_adv.h:196
adv_ctl_t::byte2
uint8_t byte2
Definition: nanobeacon_adv.h:134
pkt_f0_t::addr_not_present
uint8_t addr_not_present
Definition: nanobeacon_adv.h:9
pkt_ctl_byte0_t::rsv
uint8_t rsv
Definition: nanobeacon_adv.h:51
pkt_ctl_t::pkt_f0
pkt_f0_t pkt_f0
Definition: nanobeacon_adv.h:87
pkt_fx_private_t::rand_num_sel
uint8_t rand_num_sel
Definition: nanobeacon_adv.h:18
pkt_ctl_byte0_t::preamble
uint8_t preamble
Definition: nanobeacon_adv.h:48
pkt_f1to7_t::encryption_output_order
uint8_t encryption_output_order
Definition: nanobeacon_adv.h:36
ADV_DATA_TYPE_EID
@ ADV_DATA_TYPE_EID
Definition: nanobeacon_adv.h:160
pkt_ctl_t::byte2
pkt_ctl_byte2_t byte2
Definition: nanobeacon_adv.h:85
pkt_fx_private_t::gpio_sel
uint8_t gpio_sel
Definition: nanobeacon_adv.h:21
ADV_DATA_TYPE_GPIO_CNT
@ ADV_DATA_TYPE_GPIO_CNT
Definition: nanobeacon_adv.h:166
ADDR_RANDOM_STATIC
@ ADDR_RANDOM_STATIC
Definition: nanobeacon_adv.h:183
pkt_ctl_byte2_t
Definition: nanobeacon_adv.h:70
adv_ctl_t
Definition: nanobeacon_adv.h:131
ADDR_RANDOM_NON_RESOLVABLE
@ ADDR_RANDOM_NON_RESOLVABLE
Definition: nanobeacon_adv.h:181
ADC_CH_37_38
@ ADC_CH_37_38
Definition: nanobeacon_adv.h:194
nanobeacon_adv_add_data
int32_t nanobeacon_adv_add_data(uint8_t *data_in, uint8_t length, uint8_t encrypt_en)
addr_private_data_t::data_buf
uint8_t data_buf
Definition: nanobeacon_adv.h:126
ADV_DATA_TYPE_SENSOR
@ ADV_DATA_TYPE_SENSOR
Definition: nanobeacon_adv.h:154
ADV_DATA_TYPE_TEMP
@ ADV_DATA_TYPE_TEMP
Definition: nanobeacon_adv.h:152
ADV_DATA_TYPE_VBAT
@ ADV_DATA_TYPE_VBAT
Definition: nanobeacon_adv.h:153
pkt_ctl_byte2_t::eax_en
uint8_t eax_en
Definition: nanobeacon_adv.h:73
nanobeacon_adv_address_set
void nanobeacon_adv_address_set(address_type_t addr_type, uint8_t *mac_addr, uint16_t addr_gen_interval, uint8_t key_idx)
pkt_ctl_byte1_t
Definition: nanobeacon_adv.h:58
ADV_DATA_TYPE_ADV_EVNT_CNT
@ ADV_DATA_TYPE_ADV_EVNT_CNT
Definition: nanobeacon_adv.h:161
adv_ctl_t::packet_table_location
uint16_t packet_table_location
Definition: nanobeacon_adv.h:136
ADDR_PUBLIC
@ ADDR_PUBLIC
Definition: nanobeacon_adv.h:180
ADV_DATA_TYPE_TX_PWR_0M
@ ADV_DATA_TYPE_TX_PWR_0M
Definition: nanobeacon_adv.h:157
ADV_DATA_TYPE_SLEEP_CNT
@ ADV_DATA_TYPE_SLEEP_CNT
Definition: nanobeacon_adv.h:163
pkt_ctl_byte1_t::data_buf
uint8_t data_buf
Definition: nanobeacon_adv.h:65
ADV_DATA_TYPE_TIMER
@ ADV_DATA_TYPE_TIMER
Definition: nanobeacon_adv.h:150
pkt_ctl_t::data_buffer
uint8_t * data_buffer
Definition: nanobeacon_adv.h:90
ADV_DATA_TYPE_INP_UUID
@ ADV_DATA_TYPE_INP_UUID
Definition: nanobeacon_adv.h:158
adv_ctl_byte8_t::data_buf
uint8_t data_buf
Definition: nanobeacon_adv.h:115
pkt_f1to7_t::encryption_last
uint8_t encryption_last
Definition: nanobeacon_adv.h:32
addr_private_data_t::adv_addr_type
uint8_t adv_addr_type
Definition: nanobeacon_adv.h:123
ADV_CH_38_39
@ ADV_CH_38_39
Definition: nanobeacon_adv.h:191
pkt_ctl_t::f1to7_cnt
uint8_t f1to7_cnt
Definition: nanobeacon_adv.h:88
pkt_fx_private_t::timer_sel
uint8_t timer_sel
Definition: nanobeacon_adv.h:17
ADV_DATA_TYPE_GPIO_VAL
@ ADV_DATA_TYPE_GPIO_VAL
Definition: nanobeacon_adv.h:164
address_type_t
address_type_t
Definition: nanobeacon_adv.h:179
pkt_ctl_t::sync_pattern
uint32_t sync_pattern
Definition: nanobeacon_adv.h:86
adv_ctl_t::byte0
adv_ctl_byte0_t byte0
Definition: nanobeacon_adv.h:132
addr_private_data_t
Definition: nanobeacon_adv.h:120
adv_ctl_byte0_t::adv_type
uint8_t adv_type
Definition: nanobeacon_adv.h:99
ADV_MODE_CONTINUOUS
@ ADV_MODE_CONTINUOUS
Definition: nanobeacon_adv.h:173
adv_ctl_t::addr_private_data
addr_private_data_t addr_private_data
Definition: nanobeacon_adv.h:140
pkt_ctl_byte1_t::phy_rate
uint8_t phy_rate
Definition: nanobeacon_adv.h:63
ADV_CH_37_39
@ ADV_CH_37_39
Definition: nanobeacon_adv.h:192
pkt_ctl_t::byte0
pkt_ctl_byte0_t byte0
Definition: nanobeacon_adv.h:83
nanobeacon_adv_add_sec_cnt
int32_t nanobeacon_adv_add_sec_cnt(uint8_t length, uint8_t big_endian, uint8_t encrypt_en)
ADV_DATA_TYPE_AUXPTR
@ ADV_DATA_TYPE_AUXPTR
Definition: nanobeacon_adv.h:162
ADV_DATA_TYPE_PLSDTCT
@ ADV_DATA_TYPE_PLSDTCT
Definition: nanobeacon_adv.h:165
adv_data_t
adv_data_t
Definition: nanobeacon_adv.h:148
pkt_ctl_t
Definition: nanobeacon_adv.h:82
ADV_CH_37_38_39
@ ADV_CH_37_38_39
Definition: nanobeacon_adv.h:190
pkt_f0_t::header_len
uint8_t header_len
Definition: nanobeacon_adv.h:10
ADV_CH_38
@ ADV_CH_38
Definition: nanobeacon_adv.h:195
adv_ctl_byte0_t
Definition: nanobeacon_adv.h:96
pkt_ctl_t::cur_pos
uint8_t cur_pos
Definition: nanobeacon_adv.h:89
pkt_ctl_byte1_t::cte_len
uint8_t cte_len
Definition: nanobeacon_adv.h:62
pkt_f1to7_t
Definition: nanobeacon_adv.h:28
nanobeacon_adv_tx_set
void nanobeacon_adv_tx_set(uint32_t tx_interval, adv_channel_ctl_t ch_ctl, adv_mode_t mode)
pkt_f1to7_t::length
uint8_t length
Definition: nanobeacon_adv.h:34
adv_ctl_t::byte8
adv_ctl_byte8_t byte8
Definition: nanobeacon_adv.h:137
pkt_f1to7_t::data_src
uint8_t data_src
Definition: nanobeacon_adv.h:29
pkt_f0_t
Definition: nanobeacon_adv.h:8
pkt_fx_private_t::plsdtct_sel
uint8_t plsdtct_sel
Definition: nanobeacon_adv.h:22
adv_ctl_byte8_t::adv_trig_mode
uint8_t adv_trig_mode
Definition: nanobeacon_adv.h:110
nanobeacon_adv_add_100ms_cnt
int32_t nanobeacon_adv_add_100ms_cnt(uint8_t length, uint8_t big_endian, uint8_t encrypt_en)
adv_channel_ctl_t
adv_channel_ctl_t
Definition: nanobeacon_adv.h:189
adv_mode_t
adv_mode_t
Definition: nanobeacon_adv.h:172
adv_ctl_t::gpio_source
uint8_t gpio_source
Definition: nanobeacon_adv.h:133
pkt_ctl_byte1_t::cte_en
uint8_t cte_en
Definition: nanobeacon_adv.h:61
adv_ctl_byte0_t::data_buf
uint8_t data_buf
Definition: nanobeacon_adv.h:102
adv_ctl_byte0_t::trig_source
uint8_t trig_source
Definition: nanobeacon_adv.h:100
nanobeacon_adv_data_to_raw
uint16_t nanobeacon_adv_data_to_raw(uint8_t *buffer)
ADV_DATA_TYPE_TAG
@ ADV_DATA_TYPE_TAG
Definition: nanobeacon_adv.h:155
nanobeacon_adv_add_vcc
int32_t nanobeacon_adv_add_vcc(uint8_t length, uint8_t big_endian, uint8_t encrypt_en)
ADV_CH_39
@ ADV_CH_39
Definition: nanobeacon_adv.h:193
adv_ctl_byte8_t
Definition: nanobeacon_adv.h:107
pkt_ctl_t::byte1
pkt_ctl_byte1_t byte1
Definition: nanobeacon_adv.h:84
ADV_DATA_TYPE_CUS_UUID
@ ADV_DATA_TYPE_CUS_UUID
Definition: nanobeacon_adv.h:159
pkt_f1to7_t::endian
uint8_t endian
Definition: nanobeacon_adv.h:30
pkt_f1to7_t::msb_lsb_sel
uint8_t msb_lsb_sel
Definition: nanobeacon_adv.h:35
pkt_f1to7_t::data_offset
uint8_t data_offset
Definition: nanobeacon_adv.h:40
ADV_DATA_TYPE_REG_DATA
@ ADV_DATA_TYPE_REG_DATA
Definition: nanobeacon_adv.h:167
ADV_MODE_EVENT
@ ADV_MODE_EVENT
Definition: nanobeacon_adv.h:174
adv_ctl_byte8_t::adv_ext_en
uint8_t adv_ext_en
Definition: nanobeacon_adv.h:111
addr_private_data_t::addr_key_sel
uint8_t addr_key_sel
Definition: nanobeacon_adv.h:124
adv_ctl_byte8_t::secondary_adv_exist
uint8_t secondary_adv_exist
Definition: nanobeacon_adv.h:112
pkt_ctl_byte0_t::data_buf
uint8_t data_buf
Definition: nanobeacon_adv.h:53
adv_ctl_byte8_t::adv_channel_control
uint8_t adv_channel_control
Definition: nanobeacon_adv.h:113
pkt_ctl_byte2_t::key_sel
uint8_t key_sel
Definition: nanobeacon_adv.h:74
nanobeacon_adv_add_cnt
int32_t nanobeacon_adv_add_cnt(uint8_t length, uint8_t big_endian, uint8_t encrypt_en)