20#ifndef _COMMANDCLASSUSERCREDENTIAL_H_
21#define _COMMANDCLASSUSERCREDENTIAL_H_
29#include "ZW_classcmd.h"
43#define U3C_CREDENTIAL_TYPE_PIN_CODE_MIN_LENGTH_REQUIREMENT 4
44#define U3C_CREDENTIAL_TYPE_PIN_CODE_MAX_LENGTH_REQUIREMENT 10
45#define ASCII_AC_MAX 0x7F
46#define AC_MIN_LENGTH 4
47#define AC_MAX_LENGTH 10
48#define U3C_BUFFER_SIZE_USER_NAME CC_USER_CREDENTIAL_MAX_LENGTH_USER_NAME
51#define DEFAULT_NAME_MAX_SIZE (sizeof("User-65535") - 1) * 2
54#define CREDENTIAL_SET_FRAME_LENGTH_WITHOUT_CREDENTIAL_LENGTH (offsetof(ZW_CREDENTIAL_SET_1BYTE_FRAME, credentialLength))
56#define CREDENTIAL_SET_FRAME_LENGTH_WITHOUT_CREDENTIAL_DATA (offsetof(ZW_CREDENTIAL_SET_1BYTE_FRAME, credentialData1))
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 manufact...
_u3c_credential_report_type_t_
Definition CC_UserCredential.h:82
enum u3c_modifier_type_ u3c_modifier_type
enum u3c_event_ u3c_event_type
_u3c_admin_code_operation_result_
This operation result can optionally be injected into an Admin Code Report to pass information back t...
Definition CC_UserCredential.h:159
u3c_user_report_type_t_
Definition CC_UserCredential.h:116
struct u3c_admin_code_metadata_t_ u3c_admin_code_metadata_t
enum u3c_user_name_encoding_ u3c_user_name_encoding
u3c_user_type_
Definition CC_UserCredential.h:127
u3c_modifier_type_
Definition CC_UserCredential.h:58
struct u3c_user_t_ u3c_user_t
struct u3c_event_data_validate_t_ u3c_event_data_validate_t
Payload for CC_USER_CREDENTIAL_EVENT_VALIDATE, received from the application.
u3c_credential_learn_status_t_
Definition CC_UserCredential.h:96
u3c_user_credential_association_report_status_t
Definition CC_UserCredential.h:107
enum u3c_credential_learn_status_t_ u3c_credential_learn_status_t
enum u3c_credential_type_ u3c_credential_type
enum _u3c_credential_report_type_t_ u3c_credential_report_type_t
struct u3c_credential_t_ u3c_credential_t
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.
#define U3C_CREDENTIAL_TYPE_PIN_CODE_MAX_LENGTH_REQUIREMENT
Definition CC_UserCredential.h:44
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 t...
u3c_operation_type_t
Definition CC_UserCredential.h:201
enum u3c_user_report_type_t_ u3c_user_report_type_t
u3c_credential_rule_
Definition CC_UserCredential.h:138
enum u3c_credential_rule_ u3c_credential_rule
bool CC_UserCredential_manufacturer_validate_credential(const u3c_credential_t *const credential)
struct u3c_credential_identifier_t_ u3c_credential_identifier_t
void CC_UserCredential_set_default_name(uint8_t *pName, u3c_user_t *pUser)
struct u3c_event_data_learn_start_t_ u3c_event_data_learn_start_t
Credential Learn information passed to application layer.
u3c_event_
Definition CC_UserCredential.h:240
enum u3c_user_type_ u3c_user_type
struct u3c_credential_metadata_t_ u3c_credential_metadata_t
u3c_credential_type_
Definition CC_UserCredential.h:66
u3c_user_name_encoding_
Definition CC_UserCredential.h:144
@ CREDENTIAL_REP_TYPE_WRONG_UUID
Definition CC_UserCredential.h:92
@ CREDENTIAL_REP_TYPE_MODIFIED
Definition CC_UserCredential.h:84
@ CREDENTIAL_REP_TYPE_DUPLICATE_ADMIN_PIN_CODE
Definition CC_UserCredential.h:93
@ CREDENTIAL_REP_TYPE_UNCHANGED
Definition CC_UserCredential.h:86
@ CREDENTIAL_REP_TYPE_DUPLICATE
Definition CC_UserCredential.h:90
@ CREDENTIAL_REP_TYPE_MANUFACTURER_SECURITY_RULES
Definition CC_UserCredential.h:91
@ CREDENTIAL_REP_TYPE_MODIF_AGAINST_EMPTY
Definition CC_UserCredential.h:89
@ CREDENTIAL_REP_TYPE_RESPONSE_TO_GET
Definition CC_UserCredential.h:87
@ CREDENTIAL_REP_TYPE_ADD_AGAINST_OCCUPIED
Definition CC_UserCredential.h:88
@ CREDENTIAL_REP_TYPE_ADDED
Definition CC_UserCredential.h:83
@ CREDENTIAL_REP_TYPE_DELETED
Definition CC_UserCredential.h:85
@ ADMIN_CODE_OPERATION_RESULT_FAIL_DUPLICATE_CRED
Admin Code was not modified (Set) due to duplicate existing PIN code credential.
Definition CC_UserCredential.h:163
@ ADMIN_CODE_OPERATION_RESULT_ERROR_AC_NOT_SUPPORTED
Failed due to Admin Code not being supported (Get/Set).
Definition CC_UserCredential.h:165
@ ADMIN_CODE_OPERATION_RESULT_INTERNAL_INVALID_LENGTH
Internal validation result; Code has an invalid length.
Definition CC_UserCredential.h:171
@ ADMIN_CODE_OPERATION_RESULT_FAIL_MANUF_RULE
Admin Code was not modified (Set) due to a manufacturer security rule.
Definition CC_UserCredential.h:164
@ ADMIN_CODE_OPERATION_RESULT_ERROR_ACD_NOT_SUPPORTED
Failed due to Admin Code Deactivation not being supported (Set).
Definition CC_UserCredential.h:166
@ ADMIN_CODE_OPERATION_RESULT_INTERNAL_INVALID_CHAR
Internal validation result; Code has one or more invalid characters.
Definition CC_UserCredential.h:172
@ ADMIN_CODE_OPERATION_RESULT_INTERNAL_NONE
Internal validation result; No error.
Definition CC_UserCredential.h:170
@ ADMIN_CODE_OPERATION_RESULT_MODIFIED
Admin Code was modified (Set, External).
Definition CC_UserCredential.h:160
@ ADMIN_CODE_OPERATION_RESULT_UNMODIFIED
Admin code was not modified as current code was identical.
Definition CC_UserCredential.h:161
@ ADMIN_CODE_OPERATION_RESULT_ERROR_NODE
Failed due to unspecified node error.
Definition CC_UserCredential.h:167
@ ADMIN_CODE_OPERATION_RESULT_INTERNAL_DUPLICATE_AC
Internal validation result; Code is the same as the current admin code.
Definition CC_UserCredential.h:169
@ ADMIN_CODE_OPERATION_RESULT_GET_RESP
Default response, or response to successful Get.
Definition CC_UserCredential.h:162
@ USER_REP_TYPE_ADDED
Definition CC_UserCredential.h:117
@ USER_REP_TYPE_DELETED
Definition CC_UserCredential.h:119
@ USER_REP_TYPE_Z_EXP_MIN_INVALID
Definition CC_UserCredential.h:124
@ USER_REP_TYPE_MODIFIED
Definition CC_UserCredential.h:118
@ USER_REP_TYPE_ADD_AGAINST_OCCUPIED
Definition CC_UserCredential.h:122
@ USER_REP_TYPE_MODIF_AGAINST_EMPTY
Definition CC_UserCredential.h:123
@ USER_REP_TYPE_UNCHANGED
Definition CC_UserCredential.h:120
@ USER_REP_TYPE_RESPONSE_TO_GET
Definition CC_UserCredential.h:121
@ USER_TYPE_DISPOSABLE
Definition CC_UserCredential.h:132
@ USER_TYPE_END
Definition CC_UserCredential.h:135
@ USER_TYPE_REMOTE_ONLY
Definition CC_UserCredential.h:134
@ USER_TYPE_DURESS
Definition CC_UserCredential.h:131
@ USER_TYPE_GENERAL
Definition CC_UserCredential.h:128
@ USER_TYPE_EXPIRING
Definition CC_UserCredential.h:133
@ USER_TYPE_NON_ACCESS
Definition CC_UserCredential.h:130
@ USER_TYPE_PROGRAMMING
Definition CC_UserCredential.h:129
@ MODIFIER_TYPE_DNE
Definition CC_UserCredential.h:59
@ MODIFIER_TYPE_MOBILE_APP_OR_OTHER_IOT_TECHNOLOGY
Definition CC_UserCredential.h:63
@ MODIFIER_TYPE_UNKNOWN
Definition CC_UserCredential.h:60
@ MODIFIER_TYPE_LOCALLY
Definition CC_UserCredential.h:62
@ MODIFIER_TYPE_Z_WAVE
Definition CC_UserCredential.h:61
@ CL_STATUS_STARTED
Definition CC_UserCredential.h:97
@ CL_STATUS_SUCCESS
Definition CC_UserCredential.h:98
@ CL_STATUS_INVALID_MODIFY_OPERATION_TYPE
Definition CC_UserCredential.h:104
@ CL_STATUS_STEP_RETRY
Definition CC_UserCredential.h:102
@ CL_STATUS_INVALID_ADD_OPERATION_TYPE
Definition CC_UserCredential.h:103
@ CL_STATUS_TIMEOUT
Definition CC_UserCredential.h:101
@ CL_STATUS_ENDED_NOT_DUE_TO_TIMEOUT
Definition CC_UserCredential.h:100
@ CL_STATUS_ALREADY_IN_PROGRESS
Definition CC_UserCredential.h:99
@ U3C_UCAR_STATUS_CREDENTIAL_SLOT_EMPTY
Definition CC_UserCredential.h:111
@ U3C_UCAR_STATUS_SUCCESS
Definition CC_UserCredential.h:108
@ U3C_UCAR_STATUS_DESTINATION_USER_UNIQUE_IDENTIFIER_INVALID
Definition CC_UserCredential.h:112
@ U3C_UCAR_STATUS_CREDENTIAL_SLOT_INVALID
Definition CC_UserCredential.h:110
@ U3C_UCAR_STATUS_CREDENTIAL_TYPE_INVALID
Definition CC_UserCredential.h:109
@ U3C_UCAR_STATUS_DESTINATION_USER_UNIQUE_IDENTIFIER_NONEXISTENT
Definition CC_UserCredential.h:113
@ U3C_OPERATION_TYPE_MODIFY
Definition CC_UserCredential.h:203
@ U3C_OPERATION_TYPE_ADD
Definition CC_UserCredential.h:202
@ U3C_OPERATION_TYPE_DELETE
Definition CC_UserCredential.h:204
@ CREDENTIAL_RULE_SINGLE
Definition CC_UserCredential.h:139
@ CREDENTIAL_RULE_TRIPLE
Definition CC_UserCredential.h:141
@ CREDENTIAL_RULE_DUAL
Definition CC_UserCredential.h:140
@ CC_USER_CREDENTIAL_EVENT_LEARN_SUCCESS
Credential has been accepted into the database.
Definition CC_UserCredential.h:248
@ CC_USER_CREDENTIAL_EVENT_LEARN_CANCEL_LOCAL
Application cancelled Credential Learn process.
Definition CC_UserCredential.h:253
@ CC_USER_CREDENTIAL_EVENT_LEARN_FAILED
Definition CC_UserCredential.h:249
@ CC_USER_CREDENTIAL_EVENT_LEARN_START_REQUEST
Application is requesting to start Credential Learn.
Definition CC_UserCredential.h:244
@ CC_USER_CREDENTIAL_EVENT_LEARN_TIMEOUT
Credential Learn step timed out.
Definition CC_UserCredential.h:251
@ CC_USER_CREDENTIAL_EVENT_LEARN_STEP_RETRY
Local Credential read failed, trying to read again.
Definition CC_UserCredential.h:250
@ CC_USER_CREDENTIAL_EVENT_LEARN_CANCEL_REMOTE
Remote node cancelled Credential Learn process.
Definition CC_UserCredential.h:252
@ CC_USER_CREDENTIAL_EVENT_LEARN_STEP_START
Application progressed to new Credential Learn step.
Definition CC_UserCredential.h:246
@ CC_USER_CREDENTIAL_EVENT_VALIDATE_VALID
Credential found and User has sufficient rights.
Definition CC_UserCredential.h:242
@ CC_USER_CREDENTIAL_EVENT_VALIDATE_INVALID
Credential not found or User has insufficient rights.
Definition CC_UserCredential.h:243
@ CC_USER_CREDENTIAL_EVENT_LEARN_READ_DONE
Credential data is ready to be entered into the database.
Definition CC_UserCredential.h:247
@ CC_USER_CREDENTIAL_EVENT_VALIDATE
Application is requesting a Credential to be validated.
Definition CC_UserCredential.h:241
@ CC_USER_CREDENTIAL_EVENT_LEARN_START
Credential Learn process started.
Definition CC_UserCredential.h:245
@ CREDENTIAL_TYPE_HAND_BIOMETRIC
Definition CC_UserCredential.h:77
@ CREDENTIAL_TYPE_UNSPECIFIED_BIOMETRIC
Definition CC_UserCredential.h:78
@ CREDENTIAL_TYPE_FACE_BIOMETRIC
Definition CC_UserCredential.h:75
@ CREDENTIAL_TYPE_BLE
Definition CC_UserCredential.h:71
@ CREDENTIAL_TYPE_RFID_CODE
Definition CC_UserCredential.h:70
@ CREDENTIAL_TYPE_UWB
Definition CC_UserCredential.h:73
@ CREDENTIAL_TYPE_EYE_BIOMETRIC
Definition CC_UserCredential.h:74
@ CREDENTIAL_TYPE_NONE
Definition CC_UserCredential.h:67
@ CREDENTIAL_TYPE_FINGER_BIOMETRIC
Definition CC_UserCredential.h:76
@ CREDENTIAL_TYPE_NFC
Definition CC_UserCredential.h:72
@ CREDENTIAL_TYPE_PASSWORD
Definition CC_UserCredential.h:69
@ CREDENTIAL_TYPE_NUMBER_OF_TYPES
Definition CC_UserCredential.h:79
@ CREDENTIAL_TYPE_PIN_CODE
Definition CC_UserCredential.h:68
@ USER_NAME_ENCODING_UNICODE_UTF_16
Definition CC_UserCredential.h:147
@ USER_NAME_ENCODING_STANDARD_ASCII
Definition CC_UserCredential.h:145
@ USER_NAME_ENCODING_STANDARD_AND_OEM_EXTENDED_ASCII
Definition CC_UserCredential.h:146
Definition CC_UserCredential.h:207
uint16_t slot
Definition CC_UserCredential.h:210
u3c_credential_type type
Definition CC_UserCredential.h:209
uint16_t uuid
Definition CC_UserCredential.h:208
Definition CC_UserCredential.h:196
u3c_credential_metadata_t metadata
Definition CC_UserCredential.h:197
uint8_t * data
Definition CC_UserCredential.h:198
Payload for CC_USER_CREDENTIAL_EVENT_LEARN_READ_DONE, passed to the application.
Definition CC_UserCredential.h:220
uint8_t * data
Definition CC_UserCredential.h:221
uint8_t data_length
Definition CC_UserCredential.h:222
Credential Learn information passed to application layer.
Definition CC_UserCredential.h:226
u3c_operation_type_t operation_type
Definition CC_UserCredential.h:228
uint16_t source_id
Definition CC_UserCredential.h:229
uint8_t timeout_seconds
Definition CC_UserCredential.h:230
u3c_credential_identifier_t target
Definition CC_UserCredential.h:227
Payload for CC_USER_CREDENTIAL_EVENT_VALIDATE, received from the application.
Definition CC_UserCredential.h:214
bool is_unlocked
Definition CC_UserCredential.h:216
u3c_credential_t * credential
Definition CC_UserCredential.h:215
Definition CC_UserCredential.h:175
u3c_user_type type
Definition CC_UserCredential.h:180
u3c_user_name_encoding name_encoding
Definition CC_UserCredential.h:183
uint16_t modifier_node_id
Definition CC_UserCredential.h:177
uint16_t unique_identifier
Definition CC_UserCredential.h:176
u3c_credential_rule credential_rule
Definition CC_UserCredential.h:182
u3c_modifier_type modifier_type
Definition CC_UserCredential.h:181
uint16_t expiring_timeout_minutes
Definition CC_UserCredential.h:178
bool active
Definition CC_UserCredential.h:184
uint8_t name_length
Definition CC_UserCredential.h:179