Trident IoT Z-Wave SDK
 
Loading...
Searching...
No Matches
UserCredential
+ Collaboration diagram for UserCredential:

Data Structures

struct  u3c_user_t_
 
struct  u3c_credential_metadata_t_
 
struct  u3c_credential_t_
 
struct  u3c_credential_identifier_t_
 
struct  u3c_event_data_validate_t_
 Payload for CC_USER_CREDENTIAL_EVENT_VALIDATE, received from the application. More...
 
struct  u3c_event_data_learn_read_done_t_
 Payload for CC_USER_CREDENTIAL_EVENT_LEARN_READ_DONE, passed to the application. More...
 
struct  u3c_event_data_learn_start_t_
 Credential Learn information passed to application layer. More...
 
struct  u3c_admin_code_metadata_t_
 

Macros

#define U3C_CREDENTIAL_TYPE_PIN_CODE_MIN_LENGTH_REQUIREMENT   4
 
#define U3C_CREDENTIAL_TYPE_PIN_CODE_MAX_LENGTH_REQUIREMENT   10
 
#define ASCII_AC_MAX   0x7F
 
#define AC_MIN_LENGTH   4
 
#define AC_MAX_LENGTH   10
 
#define U3C_BUFFER_SIZE_USER_NAME   CC_USER_CREDENTIAL_MAX_LENGTH_USER_NAME
 
#define DEFAULT_NAME_MAX_SIZE   (sizeof("User-65535") - 1) * 2
 Longest possible default user name: "User-65535", times 2 for UTF-16.
 
#define CREDENTIAL_SET_FRAME_LENGTH_WITHOUT_CREDENTIAL_LENGTH   (offsetof(ZW_CREDENTIAL_SET_1BYTE_FRAME, credentialLength))
 
#define CREDENTIAL_SET_FRAME_LENGTH_WITHOUT_CREDENTIAL_DATA   (offsetof(ZW_CREDENTIAL_SET_1BYTE_FRAME, credentialData1))
 

Typedefs

typedef enum u3c_db_operation_result_ u3c_db_operation_result
 
typedef enum u3c_modifier_type_ u3c_modifier_type
 
typedef enum u3c_credential_type_ u3c_credential_type
 
typedef enum _u3c_credential_report_type_t_ u3c_credential_report_type_t
 
typedef enum u3c_credential_learn_status_t_ u3c_credential_learn_status_t
 
typedef enum u3c_user_report_type_t_ u3c_user_report_type_t
 
typedef enum u3c_user_type_ u3c_user_type
 
typedef enum u3c_credential_rule_ u3c_credential_rule
 
typedef enum u3c_user_name_encoding_ u3c_user_name_encoding
 
typedef enum _u3c_admin_code_operation_result_ u3c_admin_code_operation_result
 This operation result can optionally be injected into an Admin Code Report to pass information back to the controlling node, in lieu of another report type.
 
typedef struct u3c_user_t_ u3c_user_t
 
typedef struct u3c_credential_metadata_t_ u3c_credential_metadata_t
 
typedef struct u3c_credential_t_ u3c_credential_t
 
typedef struct u3c_credential_identifier_t_ u3c_credential_identifier_t
 
typedef struct u3c_event_data_validate_t_ u3c_event_data_validate_t
 Payload for CC_USER_CREDENTIAL_EVENT_VALIDATE, received from the application.
 
typedef struct u3c_event_data_learn_read_done_t_ u3c_event_data_learn_read_done_t
 Payload for CC_USER_CREDENTIAL_EVENT_LEARN_READ_DONE, passed to the application.
 
typedef struct u3c_event_data_learn_start_t_ u3c_event_data_learn_start_t
 Credential Learn information passed to application layer.
 
typedef struct u3c_admin_code_metadata_t_ u3c_admin_code_metadata_t
 
typedef enum u3c_event_ u3c_event_type
 

Enumerations

enum  u3c_db_operation_result_ {
  U3C_DB_OPERATION_RESULT_SUCCESS ,
  U3C_DB_OPERATION_RESULT_ERROR ,
  U3C_DB_OPERATION_RESULT_ERROR_IO ,
  U3C_DB_OPERATION_RESULT_ERROR_DUPLICATE ,
  U3C_DB_OPERATION_RESULT_FAIL_DNE ,
  U3C_DB_OPERATION_RESULT_FAIL_FULL ,
  U3C_DB_OPERATION_RESULT_FAIL_OCCUPIED ,
  U3C_DB_OPERATION_RESULT_FAIL_REASSIGN ,
  U3C_DB_OPERATION_RESULT_FAIL_IDENTICAL
}
 
enum  u3c_modifier_type_ {
  MODIFIER_TYPE_DNE = CREDENTIAL_REPORT_DNE ,
  MODIFIER_TYPE_UNKNOWN ,
  MODIFIER_TYPE_Z_WAVE ,
  MODIFIER_TYPE_LOCALLY ,
  MODIFIER_TYPE_MOBILE_APP_OR_OTHER_IOT_TECHNOLOGY
}
 
enum  u3c_credential_type_ {
  CREDENTIAL_TYPE_NONE ,
  CREDENTIAL_TYPE_PIN_CODE = CREDENTIAL_REPORT_PIN_CODE ,
  CREDENTIAL_TYPE_PASSWORD ,
  CREDENTIAL_TYPE_RFID_CODE ,
  CREDENTIAL_TYPE_BLE ,
  CREDENTIAL_TYPE_NFC ,
  CREDENTIAL_TYPE_UWB ,
  CREDENTIAL_TYPE_EYE_BIOMETRIC ,
  CREDENTIAL_TYPE_FACE_BIOMETRIC ,
  CREDENTIAL_TYPE_FINGER_BIOMETRIC ,
  CREDENTIAL_TYPE_HAND_BIOMETRIC ,
  CREDENTIAL_TYPE_UNSPECIFIED_BIOMETRIC ,
  CREDENTIAL_TYPE_NUMBER_OF_TYPES
}
 
enum  _u3c_credential_report_type_t_ {
  CREDENTIAL_REP_TYPE_ADDED = CREDENTIAL_REPORT_ADDED ,
  CREDENTIAL_REP_TYPE_MODIFIED = CREDENTIAL_REPORT_MODIFIED ,
  CREDENTIAL_REP_TYPE_DELETED = CREDENTIAL_REPORT_DELETED ,
  CREDENTIAL_REP_TYPE_UNCHANGED = CREDENTIAL_REPORT_UNCHANGED ,
  CREDENTIAL_REP_TYPE_RESPONSE_TO_GET = CREDENTIAL_REPORT_RESPONSE_TO_GET ,
  CREDENTIAL_REP_TYPE_ADD_AGAINST_OCCUPIED = CREDENTIAL_REPORT_ADD_AGAINST_OCCUPIED ,
  CREDENTIAL_REP_TYPE_MODIF_AGAINST_EMPTY = CREDENTIAL_REPORT_MODIFY_AGAINST_EMPTY ,
  CREDENTIAL_REP_TYPE_DUPLICATE = CREDENTIAL_REPORT_DUPLICATE ,
  CREDENTIAL_REP_TYPE_MANUFACTURER_SECURITY_RULES = CREDENTIAL_REPORT_MANUFACTURER_SECURITY_RULES ,
  CREDENTIAL_REP_TYPE_WRONG_UUID = CREDENTIAL_REPORT_WRONG_USER_UNIQUE_IDENTIFIER ,
  CREDENTIAL_REP_TYPE_DUPLICATE_ADMIN_PIN_CODE = CREDENTIAL_REPORT_DUPLICATE_ADMIN_PIN_CODE
}
 
enum  u3c_credential_learn_status_t_ {
  CL_STATUS_STARTED = CREDENTIAL_LEARN_REPORT_STARTED ,
  CL_STATUS_SUCCESS = CREDENTIAL_LEARN_REPORT_SUCCESS ,
  CL_STATUS_ALREADY_IN_PROGRESS = CREDENTIAL_LEARN_REPORT_ALREADY_IN_PROGRESS ,
  CL_STATUS_ENDED_NOT_DUE_TO_TIMEOUT = CREDENTIAL_LEARN_REPORT_ENDED_NOT_DUE_TO_TIMEOUT ,
  CL_STATUS_TIMEOUT = CREDENTIAL_LEARN_REPORT_TIMEOUT ,
  CL_STATUS_STEP_RETRY = CREDENTIAL_LEARN_REPORT_CREDENTIAL_LEARN_STEP_RETRY ,
  CL_STATUS_INVALID_ADD_OPERATION_TYPE = CREDENTIAL_LEARN_REPORT_INVALID_CREDENTIAL_LEARN_ADD_OPERATION_TYPE ,
  CL_STATUS_INVALID_MODIFY_OPERATION_TYPE = CREDENTIAL_LEARN_REPORT_INVALID_CREDENTIAL_LEARN_MODIFY_OPERATION_TYPE
}
 
enum  u3c_user_credential_association_report_status_t {
  U3C_UCAR_STATUS_SUCCESS = USER_CREDENTIAL_ASSOCIATION_REPORT_SUCCESS ,
  U3C_UCAR_STATUS_CREDENTIAL_TYPE_INVALID = USER_CREDENTIAL_ASSOCIATION_REPORT_CREDENTIAL_TYPE_INVALID ,
  U3C_UCAR_STATUS_SOURCE_CREDENTIAL_SLOT_INVALID = USER_CREDENTIAL_ASSOCIATION_REPORT_SOURCE_CREDENTIAL_SLOT_INVALID ,
  U3C_UCAR_STATUS_SOURCE_CREDENTIAL_SLOT_EMPTY = USER_CREDENTIAL_ASSOCIATION_REPORT_SOURCE_CREDENTIAL_SLOT_EMPTY ,
  U3C_UCAR_STATUS_DESTINATION_USER_UNIQUE_IDENTIFIER_INVALID = USER_CREDENTIAL_ASSOCIATION_REPORT_DESTINATION_USER_UNIQUE_IDENTIFIER_INVALID ,
  U3C_UCAR_STATUS_DESTINATION_USER_UNIQUE_IDENTIFIER_NONEXISTENT = USER_CREDENTIAL_ASSOCIATION_REPORT_DESTINATION_USER_UNIQUE_IDENTIFIER_NONEXISTENT ,
  U3C_UCAR_STATUS_DESTINATION_CREDENTIAL_SLOT_INVALID = USER_CREDENTIAL_ASSOCIATION_REPORT_DESTINATION_CREDENTIAL_SLOT_INVALID ,
  U3C_UCAR_STATUS_DESTINATION_CREDENTIAL_SLOT_OCCUPIED = USER_CREDENTIAL_ASSOCIATION_REPORT_DESTINATION_CREDENTIAL_SLOT_OCCUPIED
}
 
enum  u3c_user_report_type_t_ {
  USER_REP_TYPE_ADDED = USER_REPORT_ADDED ,
  USER_REP_TYPE_MODIFIED = USER_REPORT_MODIFIED ,
  USER_REP_TYPE_DELETED = USER_REPORT_DELETED ,
  USER_REP_TYPE_UNCHANGED = USER_REPORT_UNCHANGED ,
  USER_REP_TYPE_RESPONSE_TO_GET = USER_REPORT_RESPONSE_TO_GET ,
  USER_REP_TYPE_ADD_AGAINST_OCCUPIED = USER_REPORT_ADD_AGAINST_OCCUPIED ,
  USER_REP_TYPE_MODIF_AGAINST_EMPTY = USER_REPORT_MODIFY_AGAINST_EMPTY ,
  USER_REP_TYPE_Z_EXP_MIN_INVALID = USER_REPORT_ZERO_EXPIRING_MINUTES_INVALID
}
 
enum  u3c_user_type_ {
  USER_TYPE_GENERAL = 0x00 ,
  USER_TYPE_PROGRAMMING = 0x03 ,
  USER_TYPE_NON_ACCESS = 0x04 ,
  USER_TYPE_DURESS = 0x05 ,
  USER_TYPE_DISPOSABLE = 0x06 ,
  USER_TYPE_EXPIRING = 0x07 ,
  USER_TYPE_REMOTE_ONLY = 0x09 ,
  USER_TYPE_END
}
 
enum  u3c_credential_rule_ {
  CREDENTIAL_RULE_SINGLE = 0x01 ,
  CREDENTIAL_RULE_DUAL ,
  CREDENTIAL_RULE_TRIPLE
}
 
enum  u3c_user_name_encoding_ {
  USER_NAME_ENCODING_STANDARD_ASCII ,
  USER_NAME_ENCODING_STANDARD_AND_OEM_EXTENDED_ASCII ,
  USER_NAME_ENCODING_UNICODE_UTF_16
}
 
enum  _u3c_admin_code_operation_result_ {
  ADMIN_CODE_OPERATION_RESULT_MODIFIED = 0x01 ,
  ADMIN_CODE_OPERATION_RESULT_UNMODIFIED = 0x03 ,
  ADMIN_CODE_OPERATION_RESULT_GET_RESP = 0x04 ,
  ADMIN_CODE_OPERATION_RESULT_FAIL_DUPLICATE_CRED = 0x07 ,
  ADMIN_CODE_OPERATION_RESULT_FAIL_MANUF_RULE = 0x08 ,
  ADMIN_CODE_OPERATION_RESULT_ERROR_AC_NOT_SUPPORTED = 0x0D ,
  ADMIN_CODE_OPERATION_RESULT_ERROR_ACD_NOT_SUPPORTED = 0x0E ,
  ADMIN_CODE_OPERATION_RESULT_ERROR_NODE = 0x0F ,
  ADMIN_CODE_OPERATION_RESULT_INTERNAL_DUPLICATE_AC = 0x13 ,
  ADMIN_CODE_OPERATION_RESULT_INTERNAL_NONE = 0x14 ,
  ADMIN_CODE_OPERATION_RESULT_INTERNAL_INVALID_LENGTH = 0x1F ,
  ADMIN_CODE_OPERATION_RESULT_INTERNAL_INVALID_CHAR = 0x2F
}
 This operation result can optionally be injected into an Admin Code Report to pass information back to the controlling node, in lieu of another report type. More...
 
enum  u3c_operation_type_t {
  U3C_OPERATION_TYPE_ADD = 0 ,
  U3C_OPERATION_TYPE_MODIFY = 1 ,
  U3C_OPERATION_TYPE_DELETE = 2
}
 
enum  u3c_event_ {
  CC_USER_CREDENTIAL_EVENT_VALIDATE = 1 ,
  CC_USER_CREDENTIAL_EVENT_VALIDATE_VALID = 2 ,
  CC_USER_CREDENTIAL_EVENT_VALIDATE_INVALID = 3 ,
  CC_USER_CREDENTIAL_EVENT_LEARN_START_REQUEST = 4 ,
  CC_USER_CREDENTIAL_EVENT_LEARN_START = 5 ,
  CC_USER_CREDENTIAL_EVENT_LEARN_STEP_START = 6 ,
  CC_USER_CREDENTIAL_EVENT_LEARN_READ_DONE = 7 ,
  CC_USER_CREDENTIAL_EVENT_LEARN_SUCCESS = 8 ,
  CC_USER_CREDENTIAL_EVENT_LEARN_FAILED = 9 ,
  CC_USER_CREDENTIAL_EVENT_LEARN_STEP_RETRY = 10 ,
  CC_USER_CREDENTIAL_EVENT_LEARN_TIMEOUT = 11 ,
  CC_USER_CREDENTIAL_EVENT_LEARN_CANCEL_REMOTE = 12 ,
  CC_USER_CREDENTIAL_EVENT_LEARN_CANCEL_LOCAL = 13
}
 

Functions

void CC_UserCredential_factory_reset (void)
 
void CC_UserCredential_init_database (void)
 
u3c_db_operation_result CC_UserCredential_get_user (uint16_t unique_identifier, u3c_user_t *user, uint8_t *name)
 
uint16_t CC_UserCredential_get_next_user (uint16_t unique_identifier)
 
u3c_db_operation_result CC_UserCredential_add_user (u3c_user_t *user, uint8_t *name)
 
u3c_db_operation_result CC_UserCredential_modify_user (u3c_user_t *user, uint8_t *name)
 
u3c_db_operation_result CC_UserCredential_delete_user (uint16_t user_unique_identifier)
 
u3c_db_operation_result CC_UserCredential_get_credential (uint16_t user_unique_identifier, u3c_credential_type credential_type, uint16_t credential_slot, u3c_credential_metadata_t *credential_metadata, uint8_t *credential_data)
 
bool CC_UserCredential_get_next_credential (uint16_t user_unique_identifier, u3c_credential_type credential_type, uint16_t credential_slot, u3c_credential_type *next_credential_type, uint16_t *next_credential_slot)
 
u3c_db_operation_result CC_UserCredential_add_credential (u3c_credential_t *credential)
 
u3c_db_operation_result CC_UserCredential_modify_credential (u3c_credential_t *credential)
 
u3c_db_operation_result CC_UserCredential_delete_credential (u3c_credential_type credential_type, uint16_t credential_slot)
 
u3c_db_operation_result CC_UserCredential_move_credential (u3c_credential_type credential_type, uint16_t source_credential_slot, uint16_t destination_user_uid, uint16_t destination_credential_slot)
 
u3c_db_operation_result CC_UserCredential_get_admin_code_info (u3c_admin_code_metadata_t *code)
 
u3c_db_operation_result CC_UserCredential_set_admin_code (u3c_admin_code_metadata_t *code)
 
u3c_db_operation_result CC_UserCredential_add_user_and_report (u3c_user_t *p_user, uint8_t *p_name, RECEIVE_OPTIONS_TYPE_EX *p_rx_options)
 Tries to add a new user to the database and reports the result.
 
u3c_db_operation_result CC_UserCredential_modify_user_and_report (u3c_user_t *p_user, uint8_t *p_name, RECEIVE_OPTIONS_TYPE_EX *p_rx_options)
 Tries to modify a user in the database and reports the result.
 
u3c_db_operation_result CC_UserCredential_delete_user_and_report (uint16_t uuid, RECEIVE_OPTIONS_TYPE_EX *p_rx_options)
 Tries to delete a user from the database and reports the result.
 
u3c_db_operation_result CC_UserCredential_add_credential_and_report (u3c_credential_t *p_credential, RECEIVE_OPTIONS_TYPE_EX *p_rx_options)
 Tries to add a new credential to the database and reports the result.
 
u3c_db_operation_result CC_UserCredential_modify_credential_and_report (u3c_credential_t *p_credential, RECEIVE_OPTIONS_TYPE_EX *p_rx_options)
 Tries to modify a credential in the database and reports the result.
 
u3c_db_operation_result CC_UserCredential_delete_credential_and_report (uint16_t uuid, u3c_credential_type credential_type, uint16_t credential_slot, RECEIVE_OPTIONS_TYPE_EX *p_rx_options)
 Tries to delete a credential from the database and reports the result.
 
u3c_db_operation_result CC_UserCredential_move_credential_and_report (u3c_credential_type credential_type, uint16_t source_credential_slot, uint16_t destination_uuid, uint16_t destination_credential_slot, RECEIVE_OPTIONS_TYPE_EX *p_rx_options)
 Tries to assign a credential to a different slot or user.
 
bool CC_UserCredential_send_association_report (u3c_credential_metadata_t const *const p_source_metadata, u3c_credential_metadata_t const *const p_destination_metadata, u3c_user_credential_association_report_status_t const status, RECEIVE_OPTIONS_TYPE_EX *const p_rx_options)
 Sends a USER_CREDENTIAL_ASSOCIATION_REPORT frame.
 
void CC_UserCredential_delete_all_credentials_of_type (uint16_t uuid, u3c_credential_type filter_type)
 
bool CC_UserCredential_manufacturer_validate_credential (const u3c_credential_t *const credential)
 
bool CC_UserCredential_manufacturer_validate_admin_pin_code (u3c_admin_code_metadata_t *const code)
 Validates the following conditions and requirements: CC:0083.01.1A.11.011 - Code follows all manufacturer security rules.
 
void CC_UserCredential_set_default_name (uint8_t *pName, u3c_user_t *pUser)
 

Detailed Description

Macro Definition Documentation

◆ AC_MAX_LENGTH

#define AC_MAX_LENGTH   10

◆ AC_MIN_LENGTH

#define AC_MIN_LENGTH   4

◆ ASCII_AC_MAX

#define ASCII_AC_MAX   0x7F

◆ CREDENTIAL_SET_FRAME_LENGTH_WITHOUT_CREDENTIAL_DATA

#define CREDENTIAL_SET_FRAME_LENGTH_WITHOUT_CREDENTIAL_DATA   (offsetof(ZW_CREDENTIAL_SET_1BYTE_FRAME, credentialData1))

◆ CREDENTIAL_SET_FRAME_LENGTH_WITHOUT_CREDENTIAL_LENGTH

#define CREDENTIAL_SET_FRAME_LENGTH_WITHOUT_CREDENTIAL_LENGTH   (offsetof(ZW_CREDENTIAL_SET_1BYTE_FRAME, credentialLength))

◆ DEFAULT_NAME_MAX_SIZE

#define DEFAULT_NAME_MAX_SIZE   (sizeof("User-65535") - 1) * 2

Longest possible default user name: "User-65535", times 2 for UTF-16.

◆ U3C_BUFFER_SIZE_USER_NAME

#define U3C_BUFFER_SIZE_USER_NAME   CC_USER_CREDENTIAL_MAX_LENGTH_USER_NAME

◆ U3C_CREDENTIAL_TYPE_PIN_CODE_MAX_LENGTH_REQUIREMENT

#define U3C_CREDENTIAL_TYPE_PIN_CODE_MAX_LENGTH_REQUIREMENT   10

◆ U3C_CREDENTIAL_TYPE_PIN_CODE_MIN_LENGTH_REQUIREMENT

#define U3C_CREDENTIAL_TYPE_PIN_CODE_MIN_LENGTH_REQUIREMENT   4

Typedef Documentation

◆ u3c_admin_code_metadata_t

◆ u3c_admin_code_operation_result

This operation result can optionally be injected into an Admin Code Report to pass information back to the controlling node, in lieu of another report type.

Reports MUST be sent for Get operations, but MAY be sent for Set operations.

See specification for more requirement details.

◆ u3c_credential_identifier_t

◆ u3c_credential_learn_status_t

◆ u3c_credential_metadata_t

◆ u3c_credential_report_type_t

◆ u3c_credential_rule

◆ u3c_credential_t

◆ u3c_credential_type

◆ u3c_db_operation_result

◆ u3c_event_data_learn_read_done_t

Payload for CC_USER_CREDENTIAL_EVENT_LEARN_READ_DONE, passed to the application.

◆ u3c_event_data_learn_start_t

Credential Learn information passed to application layer.

◆ u3c_event_data_validate_t

Payload for CC_USER_CREDENTIAL_EVENT_VALIDATE, received from the application.

◆ u3c_event_type

typedef enum u3c_event_ u3c_event_type

◆ u3c_modifier_type

◆ u3c_user_name_encoding

◆ u3c_user_report_type_t

◆ u3c_user_t

typedef struct u3c_user_t_ u3c_user_t

◆ u3c_user_type

Enumeration Type Documentation

◆ _u3c_admin_code_operation_result_

This operation result can optionally be injected into an Admin Code Report to pass information back to the controlling node, in lieu of another report type.

Reports MUST be sent for Get operations, but MAY be sent for Set operations.

See specification for more requirement details.

Enumerator
ADMIN_CODE_OPERATION_RESULT_MODIFIED 

Admin Code was modified (Set, External).

ADMIN_CODE_OPERATION_RESULT_UNMODIFIED 

Admin code was not modified as current code was identical.

ADMIN_CODE_OPERATION_RESULT_GET_RESP 

Default response, or response to successful Get.

ADMIN_CODE_OPERATION_RESULT_FAIL_DUPLICATE_CRED 

Admin Code was not modified (Set) due to duplicate existing PIN code credential.

ADMIN_CODE_OPERATION_RESULT_FAIL_MANUF_RULE 

Admin Code was not modified (Set) due to a manufacturer security rule.

ADMIN_CODE_OPERATION_RESULT_ERROR_AC_NOT_SUPPORTED 

Failed due to Admin Code not being supported (Get/Set).

ADMIN_CODE_OPERATION_RESULT_ERROR_ACD_NOT_SUPPORTED 

Failed due to Admin Code Deactivation not being supported (Set).

ADMIN_CODE_OPERATION_RESULT_ERROR_NODE 

Failed due to unspecified node error.

ADMIN_CODE_OPERATION_RESULT_INTERNAL_DUPLICATE_AC 

Internal validation result; Code is the same as the current admin code.

ADMIN_CODE_OPERATION_RESULT_INTERNAL_NONE 

Internal validation result; No error.

ADMIN_CODE_OPERATION_RESULT_INTERNAL_INVALID_LENGTH 

Internal validation result; Code has an invalid length.

ADMIN_CODE_OPERATION_RESULT_INTERNAL_INVALID_CHAR 

Internal validation result; Code has one or more invalid characters.

◆ _u3c_credential_report_type_t_

Enumerator
CREDENTIAL_REP_TYPE_ADDED 
CREDENTIAL_REP_TYPE_MODIFIED 
CREDENTIAL_REP_TYPE_DELETED 
CREDENTIAL_REP_TYPE_UNCHANGED 
CREDENTIAL_REP_TYPE_RESPONSE_TO_GET 
CREDENTIAL_REP_TYPE_ADD_AGAINST_OCCUPIED 
CREDENTIAL_REP_TYPE_MODIF_AGAINST_EMPTY 
CREDENTIAL_REP_TYPE_DUPLICATE 
CREDENTIAL_REP_TYPE_MANUFACTURER_SECURITY_RULES 
CREDENTIAL_REP_TYPE_WRONG_UUID 
CREDENTIAL_REP_TYPE_DUPLICATE_ADMIN_PIN_CODE 

◆ u3c_credential_learn_status_t_

Enumerator
CL_STATUS_STARTED 
CL_STATUS_SUCCESS 
CL_STATUS_ALREADY_IN_PROGRESS 
CL_STATUS_ENDED_NOT_DUE_TO_TIMEOUT 
CL_STATUS_TIMEOUT 
CL_STATUS_STEP_RETRY 
CL_STATUS_INVALID_ADD_OPERATION_TYPE 
CL_STATUS_INVALID_MODIFY_OPERATION_TYPE 

◆ u3c_credential_rule_

Enumerator
CREDENTIAL_RULE_SINGLE 
CREDENTIAL_RULE_DUAL 
CREDENTIAL_RULE_TRIPLE 

◆ u3c_credential_type_

Enumerator
CREDENTIAL_TYPE_NONE 
CREDENTIAL_TYPE_PIN_CODE 
CREDENTIAL_TYPE_PASSWORD 
CREDENTIAL_TYPE_RFID_CODE 
CREDENTIAL_TYPE_BLE 
CREDENTIAL_TYPE_NFC 
CREDENTIAL_TYPE_UWB 
CREDENTIAL_TYPE_EYE_BIOMETRIC 
CREDENTIAL_TYPE_FACE_BIOMETRIC 
CREDENTIAL_TYPE_FINGER_BIOMETRIC 
CREDENTIAL_TYPE_HAND_BIOMETRIC 
CREDENTIAL_TYPE_UNSPECIFIED_BIOMETRIC 
CREDENTIAL_TYPE_NUMBER_OF_TYPES 

◆ u3c_db_operation_result_

Enumerator
U3C_DB_OPERATION_RESULT_SUCCESS 

The operation completed succesfully.

U3C_DB_OPERATION_RESULT_ERROR 

An error occurred.

U3C_DB_OPERATION_RESULT_ERROR_IO 

An I/O error occurred.

U3C_DB_OPERATION_RESULT_ERROR_DUPLICATE 

Duplicate Entry in table.

U3C_DB_OPERATION_RESULT_FAIL_DNE 

The object does not exist.

U3C_DB_OPERATION_RESULT_FAIL_FULL 

There is no space left for the object.

U3C_DB_OPERATION_RESULT_FAIL_OCCUPIED 

The object already exists.

U3C_DB_OPERATION_RESULT_FAIL_REASSIGN 

The credential is assigned to a different user.

U3C_DB_OPERATION_RESULT_FAIL_IDENTICAL 

The new data is identical to the data already stored locally.

◆ u3c_event_

enum u3c_event_
Enumerator
CC_USER_CREDENTIAL_EVENT_VALIDATE 

Application is requesting a Credential to be validated.

CC_USER_CREDENTIAL_EVENT_VALIDATE_VALID 

Credential found and User has sufficient rights.

CC_USER_CREDENTIAL_EVENT_VALIDATE_INVALID 

Credential not found or User has insufficient rights.

CC_USER_CREDENTIAL_EVENT_LEARN_START_REQUEST 

Application is requesting to start Credential Learn.

CC_USER_CREDENTIAL_EVENT_LEARN_START 

Credential Learn process started.

CC_USER_CREDENTIAL_EVENT_LEARN_STEP_START 

Application progressed to new Credential Learn step.

CC_USER_CREDENTIAL_EVENT_LEARN_READ_DONE 

Credential data is ready to be entered into the database.

CC_USER_CREDENTIAL_EVENT_LEARN_SUCCESS 

Credential has been accepted into the database.

CC_USER_CREDENTIAL_EVENT_LEARN_FAILED 
CC_USER_CREDENTIAL_EVENT_LEARN_STEP_RETRY 

Local Credential read failed, trying to read again.

CC_USER_CREDENTIAL_EVENT_LEARN_TIMEOUT 

Credential Learn step timed out.

CC_USER_CREDENTIAL_EVENT_LEARN_CANCEL_REMOTE 

Remote node cancelled Credential Learn process.

CC_USER_CREDENTIAL_EVENT_LEARN_CANCEL_LOCAL 

Application cancelled Credential Learn process.

◆ u3c_modifier_type_

Enumerator
MODIFIER_TYPE_DNE 
MODIFIER_TYPE_UNKNOWN 
MODIFIER_TYPE_Z_WAVE 
MODIFIER_TYPE_LOCALLY 
MODIFIER_TYPE_MOBILE_APP_OR_OTHER_IOT_TECHNOLOGY 

◆ u3c_operation_type_t

Enumerator
U3C_OPERATION_TYPE_ADD 
U3C_OPERATION_TYPE_MODIFY 
U3C_OPERATION_TYPE_DELETE 

◆ u3c_user_credential_association_report_status_t

Enumerator
U3C_UCAR_STATUS_SUCCESS 
U3C_UCAR_STATUS_CREDENTIAL_TYPE_INVALID 
U3C_UCAR_STATUS_SOURCE_CREDENTIAL_SLOT_INVALID 
U3C_UCAR_STATUS_SOURCE_CREDENTIAL_SLOT_EMPTY 
U3C_UCAR_STATUS_DESTINATION_USER_UNIQUE_IDENTIFIER_INVALID 
U3C_UCAR_STATUS_DESTINATION_USER_UNIQUE_IDENTIFIER_NONEXISTENT 
U3C_UCAR_STATUS_DESTINATION_CREDENTIAL_SLOT_INVALID 
U3C_UCAR_STATUS_DESTINATION_CREDENTIAL_SLOT_OCCUPIED 

◆ u3c_user_name_encoding_

Enumerator
USER_NAME_ENCODING_STANDARD_ASCII 
USER_NAME_ENCODING_STANDARD_AND_OEM_EXTENDED_ASCII 
USER_NAME_ENCODING_UNICODE_UTF_16 

◆ u3c_user_report_type_t_

Enumerator
USER_REP_TYPE_ADDED 
USER_REP_TYPE_MODIFIED 
USER_REP_TYPE_DELETED 
USER_REP_TYPE_UNCHANGED 
USER_REP_TYPE_RESPONSE_TO_GET 
USER_REP_TYPE_ADD_AGAINST_OCCUPIED 
USER_REP_TYPE_MODIF_AGAINST_EMPTY 
USER_REP_TYPE_Z_EXP_MIN_INVALID 

◆ u3c_user_type_

Enumerator
USER_TYPE_GENERAL 
USER_TYPE_PROGRAMMING 
USER_TYPE_NON_ACCESS 
USER_TYPE_DURESS 
USER_TYPE_DISPOSABLE 
USER_TYPE_EXPIRING 
USER_TYPE_REMOTE_ONLY 
USER_TYPE_END 

Function Documentation

◆ CC_UserCredential_add_credential()

u3c_db_operation_result CC_UserCredential_add_credential ( u3c_credential_t * credential)

Adds a new credential to the database.

Parameters
[in]credentialPointer to the credential to be added
Returns
The result of the operation

◆ CC_UserCredential_add_credential_and_report()

u3c_db_operation_result CC_UserCredential_add_credential_and_report ( u3c_credential_t * p_credential,
RECEIVE_OPTIONS_TYPE_EX * p_rx_options )

Tries to add a new credential to the database and reports the result.

Parameters
[in]p_credentialPointer to the new credential
[in]p_rx_optionsPointer to the details of the received frame
Returns
The result of the operation

◆ CC_UserCredential_add_user()

u3c_db_operation_result CC_UserCredential_add_user ( u3c_user_t * user,
uint8_t * name )

◆ CC_UserCredential_add_user_and_report()

u3c_db_operation_result CC_UserCredential_add_user_and_report ( u3c_user_t * p_user,
uint8_t * p_name,
RECEIVE_OPTIONS_TYPE_EX * p_rx_options )

Tries to add a new user to the database and reports the result.

Parameters
[in]p_userPointer to the new user's metadata
[in]p_namePointer to the new user's name
[in]p_rx_optionsPointer to the details of the received frame
Returns
The result of the operation

◆ CC_UserCredential_delete_all_credentials_of_type()

void CC_UserCredential_delete_all_credentials_of_type ( uint16_t uuid,
u3c_credential_type filter_type )

Deletes all Credentials of a given type for a User.

Parameters
[in]uuidUser Unique Identifier
[in]filter_typeThe type of Credentials to delete, set this to CREDENTIAL_TYPE_NONE to delete every Credential

◆ CC_UserCredential_delete_credential()

u3c_db_operation_result CC_UserCredential_delete_credential ( u3c_credential_type credential_type,
uint16_t credential_slot )

Deletes a Credential.

Parameters
[in]credential_typeType of the current Credential
[in]credential_slotSlot of the current Credential
Returns
the result of the operation

◆ CC_UserCredential_delete_credential_and_report()

u3c_db_operation_result CC_UserCredential_delete_credential_and_report ( uint16_t uuid,
u3c_credential_type credential_type,
uint16_t credential_slot,
RECEIVE_OPTIONS_TYPE_EX * p_rx_options )

Tries to delete a credential from the database and reports the result.

Parameters
[in]uuidThe UUID that the credentials are assigned to (only used for bulk operations), 0 to disable filtering by user
[in]credential_typeType of the target credential
[in]credential_slotSlot of the target credential, or 0 for all credentials
[in]p_rx_optionsPointer to the details of the received frame
Returns
The result of the operation

◆ CC_UserCredential_delete_user()

u3c_db_operation_result CC_UserCredential_delete_user ( uint16_t user_unique_identifier)

◆ CC_UserCredential_delete_user_and_report()

u3c_db_operation_result CC_UserCredential_delete_user_and_report ( uint16_t uuid,
RECEIVE_OPTIONS_TYPE_EX * p_rx_options )

Tries to delete a user from the database and reports the result.

Parameters
[in]uuidThe target user's unique identifier or 0 to delete all users.
[in]p_rx_optionsPointer to the details of the received frame
Returns
The result of the operation

◆ CC_UserCredential_factory_reset()

void CC_UserCredential_factory_reset ( void )

Resets the User Credential Command Class database to a blank state, removing all existing users, credentials and the admin code.

◆ CC_UserCredential_get_admin_code_info()

u3c_db_operation_result CC_UserCredential_get_admin_code_info ( u3c_admin_code_metadata_t * code)

Retrieves the admin code information from the node. Can be used to ensure node supports the functionality.

Parameters
[out]codeAdmin Code information. If Admin Code is not supported, the struct will be fully zeroed out upon return.
Returns
U3C_DB_OPERATION_SUCCESS if successful
U3C_DB_OPERATION_ERROR otherwise

◆ CC_UserCredential_get_credential()

u3c_db_operation_result CC_UserCredential_get_credential ( uint16_t user_unique_identifier,
u3c_credential_type credential_type,
uint16_t credential_slot,
u3c_credential_metadata_t * credential_metadata,
uint8_t * credential_data )

Copies the data for a given Credential from the database to an arbitrary location in memory.

Parameters
[in]user_unique_identifierUnique Identifier of the Credential's associated User (0 matches any UUID)
[in]credential_typeType of the requested Credential
[in]credential_slotSlot of the requested Credential
[out]credential_metadataThe memory location where the Credential metadata will be copied, or NULL if not requested
[out]credential_dataThe memory location where the Credential data will be copied, or NULL if not requested
Returns
the result of the operation

◆ CC_UserCredential_get_next_credential()

bool CC_UserCredential_get_next_credential ( uint16_t user_unique_identifier,
u3c_credential_type credential_type,
uint16_t credential_slot,
u3c_credential_type * next_credential_type,
uint16_t * next_credential_slot )

Finds the first or next available Credential entry for a given User or Credential Type (set either one of these parameters to 0 to disable filtering by that property). Set credential_slot to 0 to get the first available Credential matching the filter criteria.

Parameters
[in]user_unique_identifierUnique Identifier of the Credential's associated User (0 matches any UUID)
[in]credential_typeType of the current Credential (0 matches any Credential Type)
[in]credential_slotSlot of the current Credential (0 to get the first available Credential)
[out]next_credential_typeType of the next available Credential, if available
[out]next_credential_slotSlot of the next available Credential, if available
Returns
true if a subsequent Credential matching the criteria is found

◆ CC_UserCredential_get_next_user()

uint16_t CC_UserCredential_get_next_user ( uint16_t unique_identifier)

Finds the first or next available User Unique Identifier.

Parameters
[in]unique_identifierUnique Identifier of the current User, or 0 if the first available User Unique Identifier is requested
Returns
The Unique Identifier of the next User if available, otherwise 0

◆ CC_UserCredential_get_user()

u3c_db_operation_result CC_UserCredential_get_user ( uint16_t unique_identifier,
u3c_user_t * user,
uint8_t * name )

Copies the data for a given User from the database to an arbitrary location in memory.

Parameters
[in]unique_identifierUnique Identifier of the requested User
[out]userThe memory location where the User data will be copied, or NULL if not requested
[out]nameThe memory location where the User name will be copied, or NULL if not requested. If not NULL, user cannot be NULL either.
Returns
the result of the operation

◆ CC_UserCredential_init_database()

void CC_UserCredential_init_database ( void )

Initializes the User Credential Command Class database to a consistent state. This function is called automatically by the Z-Wave Application Framework when the application starts.

◆ CC_UserCredential_manufacturer_validate_admin_pin_code()

bool CC_UserCredential_manufacturer_validate_admin_pin_code ( u3c_admin_code_metadata_t *const code)

Validates the following conditions and requirements: CC:0083.01.1A.11.011 - Code follows all manufacturer security rules.

Should not be called if AC is not supported.

Parameters
codePointer to structure containing Admin Code information.
Returns
True if all checks pass. If checks do not pass, returns false, and result code populated in code struct.
Note
result code of a successful check should be ignored, but in practice ensure it is set to ADMIN_CODE_OPERATION_RESULT_NONE in this case.

◆ CC_UserCredential_manufacturer_validate_credential()

bool CC_UserCredential_manufacturer_validate_credential ( const u3c_credential_t *const credential)

Validates a Credential according to the manufacturer's security rules

Returns
True if the Credential conforms to the security rules

◆ CC_UserCredential_modify_credential()

u3c_db_operation_result CC_UserCredential_modify_credential ( u3c_credential_t * credential)

◆ CC_UserCredential_modify_credential_and_report()

u3c_db_operation_result CC_UserCredential_modify_credential_and_report ( u3c_credential_t * p_credential,
RECEIVE_OPTIONS_TYPE_EX * p_rx_options )

Tries to modify a credential in the database and reports the result.

Parameters
[in]p_credentialPointer to the credential with the new desired data
[in]p_rx_optionsPointer to the details of the received frame
Returns
The result of the operation

◆ CC_UserCredential_modify_user()

u3c_db_operation_result CC_UserCredential_modify_user ( u3c_user_t * user,
uint8_t * name )

Modifies a user in the database.

Parameters
[in]userPointer to the user's new metadata
[in]namePointer to the user's new name (set to NULL to keep old name)

◆ CC_UserCredential_modify_user_and_report()

u3c_db_operation_result CC_UserCredential_modify_user_and_report ( u3c_user_t * p_user,
uint8_t * p_name,
RECEIVE_OPTIONS_TYPE_EX * p_rx_options )

Tries to modify a user in the database and reports the result.

Parameters
[in]p_userPointer to the user's new metadata
[in]p_namePointer to the new user's new name
[in]p_rx_optionsPointer to the details of the received frame
Returns
The result of the operation

◆ CC_UserCredential_move_credential()

u3c_db_operation_result CC_UserCredential_move_credential ( u3c_credential_type credential_type,
uint16_t source_credential_slot,
uint16_t destination_user_uid,
uint16_t destination_credential_slot )

Moves a credential from one slot to another and/or assigns a credential from one User Unique Identifier to another one.

Parameters
[in]credential_typeType of the credential
[in]source_credential_slotSlot of the credential to be moved
[in]destination_user_uidThe new desired UUID to assign the credential to
[in]destination_credential_slotThe new desired slot number for the credential

◆ CC_UserCredential_move_credential_and_report()

u3c_db_operation_result CC_UserCredential_move_credential_and_report ( u3c_credential_type credential_type,
uint16_t source_credential_slot,
uint16_t destination_uuid,
uint16_t destination_credential_slot,
RECEIVE_OPTIONS_TYPE_EX * p_rx_options )

Tries to assign a credential to a different slot or user.

Parameters
[in]credential_typeType of the credential
[in]source_credential_slotSlot of the original credential
[in]destination_uuidNew desired UUID to assign the credential to
[in]destination_credential_slotNew desired slot number for the credential
[in]p_rx_optionsPointer to the details of the received frame
Returns
The result of the operation

◆ CC_UserCredential_send_association_report()

bool CC_UserCredential_send_association_report ( u3c_credential_metadata_t const *const p_source_metadata,
u3c_credential_metadata_t const *const p_destination_metadata,
u3c_user_credential_association_report_status_t const status,
RECEIVE_OPTIONS_TYPE_EX *const p_rx_options )

Sends a USER_CREDENTIAL_ASSOCIATION_REPORT frame.

Parameters
[in]p_source_metadataSource credential metadata.
[in]p_destination_metadataDestination credential metadata.
[in]statusStatus of association set action.
[in]p_rx_optionsPointer to the details of the received frame.
Returns
true if the frame was enqueued succesfully.

◆ CC_UserCredential_set_admin_code()

u3c_db_operation_result CC_UserCredential_set_admin_code ( u3c_admin_code_metadata_t * code)

Sets the admin code on the node, if supported.

Parameters
[in]codeAdmin Code information to apply to node
Returns
U3C_DB_OPERATION_ERROR_DUPLICATE if Admin Code is a duplicate of an existing PIN Code or Admin Code
U3C_OPERATION_SUCCESS if successful
U3C_OPERATION_ERROR otherwise

◆ CC_UserCredential_set_default_name()

void CC_UserCredential_set_default_name ( uint8_t * pName,
u3c_user_t * pUser )

Generates a default User Name value with either ASCII or UTF-16 encoding, according to CC:0083.01.05.12.052

Parameters
[out]pNamePointer to the User Name
[in]pUserPointer to the User object