7#ifndef BM_NFC_NDEF_CH_H_
8#define BM_NFC_NDEF_CH_H_
21#include <bm/nfc/ndef/record.h>
22#include <bm/nfc/ndef/msg.h>
23#include <bm/nfc/ndef/payload_type_common.h>
33#define NFC_NDEF_CH_REC_TYPE_LENGTH 2
90#define NFC_NDEF_CH_AC_CPS_MASK (NFC_AC_CPS_UNKNOWN)
189#define NFC_NDEF_CH_RECORD_DESC_DEF(_name, _rec_type_field, _major_version, _minor_version, \
191 NFC_NDEF_MSG_DEF(_name, _max_records); \
192 struct nfc_ndef_ch_rec _name##_nfc_ch_rec = {.major_version = _major_version, \
193 .minor_version = _minor_version, \
194 .local_records = &NFC_NDEF_MSG(_name)}; \
195 NFC_NDEF_GENERIC_RECORD_DESC_DEF(_name, TNF_WELL_KNOWN, 0, 0, _rec_type_field, \
196 NFC_NDEF_CH_REC_TYPE_LENGTH, \
197 nfc_ndef_ch_rec_payload_encode, &(_name##_nfc_ch_rec))
219#define NFC_NDEF_CH_HS_RECORD_DESC_DEF(_name, _major_version, _minor_version, _max_records) \
220 NFC_NDEF_CH_RECORD_DESC_DEF(_name, nfc_ndef_ch_hs_rec_type_field, _major_version, \
221 _minor_version, _max_records)
243#define NFC_NDEF_CH_HR_RECORD_DESC_DEF(_name, _major_version, _minor_version, _max_records) \
244 NFC_NDEF_CH_RECORD_DESC_DEF(_name, nfc_ndef_ch_hr_rec_type_field, _major_version, \
245 _minor_version, _max_records)
267#define NFC_NDEF_CH_HM_RECORD_DESC_DEF(_name, _major_version, _minor_version, _max_records) \
268 NFC_NDEF_CH_RECORD_DESC_DEF(_name, nfc_ndef_ch_hm_rec_type_field, _major_version, \
269 _minor_version, _max_records)
288#define NFC_NDEF_CH_HI_RECORD_DESC_DEF(_name, _major_version, _minor_version, _max_records) \
289 NFC_NDEF_CH_RECORD_DESC_DEF(_name, nfc_ndef_ch_hi_rec_type_field, _major_version, \
290 _minor_version, _max_records)
296#define NFC_NDEF_CH_RECORD_DESC(_name) NFC_NDEF_GENERIC_RECORD_DESC(_name)
355#define NFC_NDEF_CH_HC_RECORD_DESC_DEF(_name, _payload_id, _payload_id_length, _payload_desc) \
357 NFC_NDEF_GENERIC_RECORD_DESC_DEF(_name, TNF_WELL_KNOWN, _payload_id, _payload_id_length, \
358 nfc_ndef_ch_hc_rec_type_field, \
359 NFC_NDEF_CH_REC_TYPE_LENGTH, \
360 nfc_ndef_ch_hc_rec_payload_encode, (_payload_desc))
366#define NFC_NDEF_CH_HC_RECORD_DESC(_name) NFC_NDEF_GENERIC_RECORD_DESC(_name)
404#define NFC_NDEF_CH_AC_RECORD_DESC_DEF(_name, _cps, _carr_data_ref_len, _carr_data_ref, \
405 _max_aux_data_ref_cnt) \
406 struct nfc_ndef_ch_ac_rec_ref _name##nfc_ndef_ch_ac_rec_ref[_max_aux_data_ref_cnt]; \
407 struct nfc_ndef_ch_ac_rec _name##_nfc_ac_rec = { \
409 .carrier_data_ref = {_carr_data_ref_len, _carr_data_ref}, \
410 .max_aux_data_ref_cnt = _max_aux_data_ref_cnt, \
411 .aux_data_ref_cnt = 0, \
412 .aux_data_ref = _name##nfc_ndef_ch_ac_rec_ref}; \
413 NFC_NDEF_GENERIC_RECORD_DESC_DEF(_name, TNF_WELL_KNOWN, 0, 0, \
414 nfc_ndef_ch_ac_rec_type_field, \
415 NFC_NDEF_CH_REC_TYPE_LENGTH, \
416 nfc_ndef_ch_ac_rec_payload_encode, &(_name##_nfc_ac_rec))
422#define NFC_NDEF_CH_AC_RECORD_DESC(_name) NFC_NDEF_GENERIC_RECORD_DESC(_name)
447 const uint8_t *aux_data, uint8_t aux_length);
482#define NFC_NDEF_CH_CR_RECORD_DESC_DEF(_name, _random_number) \
483 struct nfc_ndef_ch_cr_rec _name##_nfc_cr_rec = { \
484 .random = _random_number, \
486 NFC_NDEF_GENERIC_RECORD_DESC_DEF(_name, TNF_WELL_KNOWN, 0, 0, \
487 nfc_ndef_ch_cr_rec_type_field, \
488 NFC_NDEF_CH_REC_TYPE_LENGTH, \
489 nfc_ndef_ch_cr_rec_payload_encode, &(_name##_nfc_cr_rec))
495#define NFC_NDEF_CR_RECORD_DESC(_name) NFC_NDEF_GENERIC_RECORD_DESC(_name)
void nfc_ndef_ch_ac_rec_auxiliary_data_ref_clear(struct nfc_ndef_record_desc *ac_rec)
Function for clearing an Auxiliary Data Reference in an NFC NDEF Alternative Carrier record.
int nfc_ndef_ch_ac_rec_auxiliary_data_ref_add(struct nfc_ndef_record_desc *ac_rec, const uint8_t *aux_data, uint8_t aux_length)
Function for adding an Auxiliary Data Reference to an NFC NDEF Alternative Carrier record.
int nfc_ndef_ch_rec_payload_encode(const struct nfc_ndef_ch_rec *ch_rec, uint8_t *buf, uint32_t *len)
Constructor for an NFC Connection Handover generic record payload.
int nfc_ndef_ch_hc_rec_payload_encode(const struct nfc_ndef_ch_hc_rec *hc_rec, uint8_t *buf, uint32_t *len)
Constructor for an NFC Connection Handover Carrier Record payload.
int nfc_ndef_ch_ac_rec_payload_encode(const struct nfc_ndef_ch_ac_rec *nfc_rec_ac, uint8_t *buf, uint32_t *len)
Constructor for an NFC NDEF Alternative Carrier record payload.
nfc_ndef_ch_ac_rec_cps
Carrier Power State.
Definition ch.h:75
@ NFC_AC_CPS_ACTIVE
Definition ch.h:80
@ NFC_AC_CPS_ACTIVATING
Definition ch.h:83
@ NFC_AC_CPS_UNKNOWN
Definition ch.h:86
@ NFC_AC_CPS_INACTIVE
Definition ch.h:77
void nfc_ndef_ch_rec_local_record_clear(struct nfc_ndef_record_desc *ch_rec)
Function for clearing local records in the NFC NDEF Connection Handover records.
int nfc_ndef_ch_cr_rec_payload_encode(const struct nfc_ndef_ch_cr_rec *nfc_rec_cr, uint8_t *buf, uint32_t *len)
Constructor for an NFC NDEF Collision Resolution record payload.
int nfc_ndef_ch_rec_local_record_add(struct nfc_ndef_record_desc *ch_rec, const struct nfc_ndef_record_desc *local_rec)
Function for adding a local record to an NFC NDEF Handover Select record.
nfc_ndef_record_tnf
Type Name Format (TNF) Field Values.
Definition record.h:63
uint8_t length
Definition ch.h:97
const uint8_t * data
Definition ch.h:102
Carrier Data Reference and Auxiliary Data Reference descriptor.
Definition ch.h:95
struct nfc_ndef_ch_ac_rec_ref * aux_data_ref
Definition ch.h:122
uint8_t aux_data_ref_cnt
Definition ch.h:119
enum nfc_ndef_ch_ac_rec_cps cps
Definition ch.h:110
struct nfc_ndef_ch_ac_rec_ref carrier_data_ref
Definition ch.h:113
const uint8_t max_aux_data_ref_cnt
Definition ch.h:116
Alternative Carrier record payload descriptor.
Definition ch.h:108
uint16_t random
Definition ch.h:130
Collision Resolution record payload descriptor.
Definition ch.h:128
enum nfc_ndef_record_tnf ctf
Definition ch.h:46
uint8_t * data
Definition ch.h:66
uint8_t type_len
Definition ch.h:51
uint8_t data_len
Definition ch.h:60
struct nfc_ndef_ch_hc_rec::@124 carrier
const uint8_t * type
Definition ch.h:57
Handover Carrier record payload descriptor.
Definition ch.h:38
struct nfc_ndef_msg_desc * local_records
Definition ch.h:148
uint8_t major_version
Definition ch.h:140
uint8_t minor_version
Definition ch.h:145
Handover Select record payload descriptor.
Definition ch.h:136
NDEF message descriptor.
Definition msg.h:29
NDEF record descriptor.
Definition record.h:89