Z-Wave Protocol Controller Reference
zwapi_protocol_mem.h
Go to the documentation of this file.
1/******************************************************************************
2 * # License
3 * <b>Copyright 2021 Silicon Laboratories Inc. www.silabs.com</b>
4 ******************************************************************************
5 * The licensor of this software is Silicon Laboratories Inc. Your use of this
6 * software is governed by the terms of Silicon Labs Master Software License
7 * Agreement (MSLA) available at
8 * www.silabs.com/about-us/legal/master-software-license-agreement. This
9 * software is distributed to you in Source Code format and is governed by the
10 * sections of the MSLA applicable to Source Code.
11 *
12 *****************************************************************************/
13
19#ifndef ZWAPI_PROTOCOL_MEM_H
20#define ZWAPI_PROTOCOL_MEM_H
21
22#include <stdint.h>
23
24// Includes from other components
25#include "sl_status.h"
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
41/* Size definitions for the NVR structure */
42#define NVR_SAW_CENTER_FREQ_SIZE 0x03
43#define NVR_NVM_SIZE_SIZE 0x02
44#define NVR_NVM_PAGE_SIZE_SIZE 0x02
45#define NVR_UUID_SIZE 0x10
46#define NVR_USBID_SIZE 0x02
47#define NVR_SECURITY_PUBLIC_KEY_SIZE 0x20
48#define NVR_SECURITY_PRIVATE_KEY_SIZE 0x20
49#define NVR_CRC16_SIZE 0x02
50
51/* Structure of the data in the NVR flash page */
52typedef struct _NVR_FLASH_STRUCT_ {
53 uint8_t bRevision;
55 uint8_t bPinSwap;
59 uint8_t bNVMType;
64 [NVR_USBID_SIZE]; /*idVendor if 0xff -> use sigma Vendor ID (Assigned by USB Org)*/
66 [NVR_USBID_SIZE]; /*idProduct if 0xff -> use sigma Product ID (Assigned by Manufacturer)*/
72
87 zwapi_nvr_get_value(uint8_t bOffset, uint8_t bLength, uint8_t *bRetBuffer);
88
100
110sl_status_t zwapi_memory_get_byte(uint16_t offset, uint8_t *byte_value);
111
121uint8_t zwapi_memory_put_byte(uint16_t offset, uint8_t bData);
122
134 zwapi_memory_get_buffer(uint16_t offset, uint8_t *buffer, uint8_t length);
135
148uint8_t zwapi_memory_put_buffer(uint16_t offset,
149 const uint8_t *buffer,
150 uint16_t length,
151 void (*callback_function)(void));
152
164uint8_t zwapi_memory_put_buffer_blocking(uint16_t offset,
165 uint8_t *buffer,
166 uint16_t length,
167 uint16_t timeout);
168
170
171#ifdef __cplusplus
172}
173#endif
174
175#endif // ZWAPI_PROTOCOL_MEM_H
#define NVR_SAW_CENTER_FREQ_SIZE
Definition: zwapi_protocol_mem.h:42
sl_status_t zwapi_memory_get_byte(uint16_t offset, uint8_t *byte_value)
Read one byte from the EEPROM.
Definition: zwapi_protocol_mem.c:94
#define NVR_USBID_SIZE
Definition: zwapi_protocol_mem.h:46
#define NVR_NVM_PAGE_SIZE_SIZE
Definition: zwapi_protocol_mem.h:44
#define NVR_NVM_SIZE_SIZE
Definition: zwapi_protocol_mem.h:43
struct _NVR_FLASH_STRUCT_ NVR_FLASH_STRUCT
uint8_t zwapi_memory_put_buffer_blocking(uint16_t offset, uint8_t *buffer, uint16_t length, uint16_t timeout)
Copy the number of bytes to the EEPROM and waits for Z-Wave module callback before returning.
Definition: zwapi_protocol_mem.c:243
sl_status_t zwapi_memory_get_ids(zwave_home_id_t *home_id, zwave_node_id_t *node_id)
Get the Home ID and Node ID of the Z-Wave module.
Definition: zwapi_protocol_mem.c:63
sl_status_t zwapi_memory_get_buffer(uint16_t offset, uint8_t *buffer, uint8_t length)
Read the number of bytes from the EEPROM.
Definition: zwapi_protocol_mem.c:140
#define NVR_UUID_SIZE
Definition: zwapi_protocol_mem.h:45
sl_status_t zwapi_nvr_get_value(uint8_t bOffset, uint8_t bLength, uint8_t *bRetBuffer)
Get a value from the NVR flash page.
Definition: zwapi_protocol_mem.c:37
#define NVR_SECURITY_PUBLIC_KEY_SIZE
Definition: zwapi_protocol_mem.h:47
uint8_t zwapi_memory_put_buffer(uint16_t offset, const uint8_t *buffer, uint16_t length, void(*callback_function)(void))
Copy the number of bytes to the EEPROM.
Definition: zwapi_protocol_mem.c:178
uint8_t zwapi_memory_put_byte(uint16_t offset, uint8_t bData)
Add one byte to the EEPROM write queue.
Definition: zwapi_protocol_mem.c:116
#define NVR_SECURITY_PRIVATE_KEY_SIZE
Definition: zwapi_protocol_mem.h:48
uint32_t sl_status_t
Definition: sl_status.h:139
uint32_t zwave_home_id_t
Z-Wave HomeID type.
Definition: zwave_node_id_definitions.h:87
uint16_t zwave_node_id_t
Z-Wave NodeID type.
Definition: zwave_node_id_definitions.h:84
SL Status Codes.
Definition: zwapi_protocol_mem.h:52
uint8_t idProductUsb[NVR_USBID_SIZE]
Definition: zwapi_protocol_mem.h:66
uint8_t aSecurityPublicKey[NVR_SECURITY_PUBLIC_KEY_SIZE]
Definition: zwapi_protocol_mem.h:69
uint8_t abSAWCenterFreq[NVR_SAW_CENTER_FREQ_SIZE]
Definition: zwapi_protocol_mem.h:57
uint8_t bPinSwap
Definition: zwapi_protocol_mem.h:55
uint8_t bNVMSize[NVR_NVM_SIZE_SIZE]
Definition: zwapi_protocol_mem.h:60
uint8_t bTxCalibration1
Definition: zwapi_protocol_mem.h:67
uint8_t bTxCalibration2
Definition: zwapi_protocol_mem.h:68
uint8_t bSAWBandwidth
Definition: zwapi_protocol_mem.h:58
uint8_t aSecurityPrivateKey[NVR_SECURITY_PRIVATE_KEY_SIZE]
Definition: zwapi_protocol_mem.h:70
uint8_t bNVMPageSize[NVR_NVM_PAGE_SIZE_SIZE]
Definition: zwapi_protocol_mem.h:61
uint8_t idVendorUsb[NVR_USBID_SIZE]
Definition: zwapi_protocol_mem.h:64
uint8_t bCrystalCalibration
Definition: zwapi_protocol_mem.h:54
uint8_t bNVMType
Definition: zwapi_protocol_mem.h:59
uint8_t bRevision
Definition: zwapi_protocol_mem.h:53
uint8_t abUUID[NVR_UUID_SIZE]
Definition: zwapi_protocol_mem.h:62
uint8_t bNVMChipSelect
Definition: zwapi_protocol_mem.h:56
const zwave_home_id_t home_id
const zwave_node_id_t node_id