nRF Connect SDK API 3.3.99
Loading...
Searching...
No Matches
ch.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2020 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5 */
6
7#ifndef NFC_NDEF_CH_H_
8#define NFC_NDEF_CH_H_
9
19#include <stdint.h>
20#include <string.h>
21#include <zephyr/types.h>
22#include <nfc/ndef/record.h>
23#include <nfc/ndef/msg.h>
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
34#define NFC_NDEF_CH_REC_TYPE_LENGTH 2
35
48
50 struct {
52 uint8_t type_len;
53
58 const uint8_t *type;
59
61 uint8_t data_len;
62
67 uint8_t *data;
69};
70
89
91#define NFC_NDEF_CH_AC_CPS_MASK (NFC_AC_CPS_UNKNOWN)
92
98 uint8_t length;
99
103 const uint8_t *data;
104};
105
125
131 uint16_t random;
132};
133
151
166int nfc_ndef_ch_rec_payload_encode(const struct nfc_ndef_ch_rec *ch_rec, uint8_t *buf,
167 uint32_t *len);
168
190#define NFC_NDEF_CH_RECORD_DESC_DEF(_name, _rec_type_field, _major_version, _minor_version, \
191 _max_records) \
192 NFC_NDEF_MSG_DEF(_name, _max_records); \
193 struct nfc_ndef_ch_rec _name##_nfc_ch_rec = {.major_version = _major_version, \
194 .minor_version = _minor_version, \
195 .local_records = &NFC_NDEF_MSG(_name)}; \
196 NFC_NDEF_GENERIC_RECORD_DESC_DEF(_name, TNF_WELL_KNOWN, 0, 0, _rec_type_field, \
197 NFC_NDEF_CH_REC_TYPE_LENGTH, \
198 nfc_ndef_ch_rec_payload_encode, &(_name##_nfc_ch_rec))
199
220#define NFC_NDEF_CH_HS_RECORD_DESC_DEF(_name, _major_version, _minor_version, _max_records) \
221 NFC_NDEF_CH_RECORD_DESC_DEF(_name, nfc_ndef_ch_hs_rec_type_field, _major_version, \
222 _minor_version, _max_records)
223
244#define NFC_NDEF_CH_HR_RECORD_DESC_DEF(_name, _major_version, _minor_version, _max_records) \
245 NFC_NDEF_CH_RECORD_DESC_DEF(_name, nfc_ndef_ch_hr_rec_type_field, _major_version, \
246 _minor_version, _max_records)
247
268#define NFC_NDEF_CH_HM_RECORD_DESC_DEF(_name, _major_version, _minor_version, _max_records) \
269 NFC_NDEF_CH_RECORD_DESC_DEF(_name, nfc_ndef_ch_hm_rec_type_field, _major_version, \
270 _minor_version, _max_records)
271
289#define NFC_NDEF_CH_HI_RECORD_DESC_DEF(_name, _major_version, _minor_version, _max_records) \
290 NFC_NDEF_CH_RECORD_DESC_DEF(_name, nfc_ndef_ch_hi_rec_type_field, _major_version, \
291 _minor_version, _max_records)
292
297#define NFC_NDEF_CH_RECORD_DESC(_name) NFC_NDEF_GENERIC_RECORD_DESC(_name)
298
308
320 const struct nfc_ndef_record_desc *local_rec);
321
336int nfc_ndef_ch_hc_rec_payload_encode(const struct nfc_ndef_ch_hc_rec *hc_rec, uint8_t *buf,
337 uint32_t *len);
338
356#define NFC_NDEF_CH_HC_RECORD_DESC_DEF(_name, _payload_id, _payload_id_length, _payload_desc) \
357 \
358 NFC_NDEF_GENERIC_RECORD_DESC_DEF(_name, TNF_WELL_KNOWN, _payload_id, _payload_id_length, \
359 nfc_ndef_ch_hc_rec_type_field, \
360 NFC_NDEF_CH_REC_TYPE_LENGTH, \
361 nfc_ndef_ch_hc_rec_payload_encode, (_payload_desc))
362
367#define NFC_NDEF_CH_HC_RECORD_DESC(_name) NFC_NDEF_GENERIC_RECORD_DESC(_name)
368
383int nfc_ndef_ch_ac_rec_payload_encode(const struct nfc_ndef_ch_ac_rec *nfc_rec_ac, uint8_t *buf,
384 uint32_t *len);
385
405#define NFC_NDEF_CH_AC_RECORD_DESC_DEF(_name, _cps, _carr_data_ref_len, _carr_data_ref, \
406 _max_aux_data_ref_cnt) \
407 struct nfc_ndef_ch_ac_rec_ref _name##nfc_ndef_ch_ac_rec_ref[_max_aux_data_ref_cnt]; \
408 struct nfc_ndef_ch_ac_rec _name##_nfc_ac_rec = { \
409 .cps = _cps, \
410 .carrier_data_ref = {_carr_data_ref_len, _carr_data_ref}, \
411 .max_aux_data_ref_cnt = _max_aux_data_ref_cnt, \
412 .aux_data_ref_cnt = 0, \
413 .aux_data_ref = _name##nfc_ndef_ch_ac_rec_ref}; \
414 NFC_NDEF_GENERIC_RECORD_DESC_DEF(_name, TNF_WELL_KNOWN, 0, 0, \
415 nfc_ndef_ch_ac_rec_type_field, \
416 NFC_NDEF_CH_REC_TYPE_LENGTH, \
417 nfc_ndef_ch_ac_rec_payload_encode, &(_name##_nfc_ac_rec))
418
423#define NFC_NDEF_CH_AC_RECORD_DESC(_name) NFC_NDEF_GENERIC_RECORD_DESC(_name)
424
435
448 const uint8_t *aux_data, uint8_t aux_length);
449
464int nfc_ndef_ch_cr_rec_payload_encode(const struct nfc_ndef_ch_cr_rec *nfc_rec_cr, uint8_t *buf,
465 uint32_t *len);
466
483#define NFC_NDEF_CH_CR_RECORD_DESC_DEF(_name, _random_number) \
484 struct nfc_ndef_ch_cr_rec _name##_nfc_cr_rec = { \
485 .random = _random_number, \
486 }; \
487 NFC_NDEF_GENERIC_RECORD_DESC_DEF(_name, TNF_WELL_KNOWN, 0, 0, \
488 nfc_ndef_ch_cr_rec_type_field, \
489 NFC_NDEF_CH_REC_TYPE_LENGTH, \
490 nfc_ndef_ch_cr_rec_payload_encode, &(_name##_nfc_cr_rec))
491
496#define NFC_NDEF_CR_RECORD_DESC(_name) NFC_NDEF_GENERIC_RECORD_DESC(_name)
497
498#ifdef __cplusplus
499}
500#endif
501
506#endif /* NFC_NDEF_CH_H_ */
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:76
@ NFC_AC_CPS_ACTIVE
Definition ch.h:81
@ NFC_AC_CPS_ACTIVATING
Definition ch.h:84
@ NFC_AC_CPS_UNKNOWN
Definition ch.h:87
@ NFC_AC_CPS_INACTIVE
Definition ch.h:78
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:98
const uint8_t * data
Definition ch.h:103
Carrier Data Reference and Auxiliary Data Reference descriptor.
Definition ch.h:96
struct nfc_ndef_ch_ac_rec_ref * aux_data_ref
Definition ch.h:123
uint8_t aux_data_ref_cnt
Definition ch.h:120
enum nfc_ndef_ch_ac_rec_cps cps
Definition ch.h:111
struct nfc_ndef_ch_ac_rec_ref carrier_data_ref
Definition ch.h:114
const uint8_t max_aux_data_ref_cnt
Definition ch.h:117
Alternative Carrier record payload descriptor.
Definition ch.h:109
uint16_t random
Definition ch.h:131
Collision Resolution record payload descriptor.
Definition ch.h:129
enum nfc_ndef_record_tnf ctf
Definition ch.h:47
uint8_t * data
Definition ch.h:67
uint8_t type_len
Definition ch.h:52
uint8_t data_len
Definition ch.h:61
struct nfc_ndef_ch_hc_rec::@219 carrier
const uint8_t * type
Definition ch.h:58
Handover Carrier record payload descriptor.
Definition ch.h:39
struct nfc_ndef_msg_desc * local_records
Definition ch.h:149
uint8_t major_version
Definition ch.h:141
uint8_t minor_version
Definition ch.h:146
Handover Select record payload descriptor.
Definition ch.h:137
NDEF message descriptor.
Definition msg.h:29
NDEF record descriptor.
Definition record.h:89