@@ -32,6 +32,8 @@ static const char *TAG = "esp_rmaker_user_mapping";
32
32
#define USER_MAPPING_ENDPOINT "cloud_user_assoc"
33
33
#define USER_MAPPING_NVS_NAMESPACE "user_mapping"
34
34
#define USER_ID_NVS_NAME "user_id"
35
+ #define USER_RESET_ID "esp-rmaker"
36
+ #define USER_RESET_KEY "failed"
35
37
36
38
typedef struct {
37
39
char * user_id ;
@@ -82,7 +84,15 @@ static void esp_rmaker_user_mapping_event_handler(void* arg, esp_event_base_t ev
82
84
int msg_id = * ((int * )event_data );
83
85
if (msg_id == rmaker_user_mapping_data -> mqtt_msg_id ) {
84
86
ESP_LOGI (TAG , "User Node association message published successfully." );
85
- rmaker_user_mapping_state = ESP_RMAKER_USER_MAPPING_DONE ;
87
+ esp_rmaker_user_mapping_data_t * data = (esp_rmaker_user_mapping_data_t * )arg ;
88
+ if (data && (strcmp (data -> user_id , USER_RESET_ID ) == 0 )) {
89
+ rmaker_user_mapping_state = ESP_RMAKER_USER_MAPPING_RESET ;
90
+ esp_rmaker_post_event (RMAKER_EVENT_USER_NODE_MAPPING_RESET , NULL , 0 );
91
+ } else {
92
+ rmaker_user_mapping_state = ESP_RMAKER_USER_MAPPING_DONE ;
93
+ esp_rmaker_post_event (RMAKER_EVENT_USER_NODE_MAPPING_DONE , rmaker_user_mapping_data -> user_id ,
94
+ strlen (rmaker_user_mapping_data -> user_id ) + 1 );
95
+ }
86
96
#ifdef CONFIG_ESP_RMAKER_USER_ID_CHECK
87
97
/* Store User Id in NVS since acknowledgement of the user-node association message is received */
88
98
nvs_handle handle ;
@@ -92,8 +102,6 @@ static void esp_rmaker_user_mapping_event_handler(void* arg, esp_event_base_t ev
92
102
nvs_close (handle );
93
103
}
94
104
#endif
95
- esp_rmaker_post_event (RMAKER_EVENT_USER_NODE_MAPPING_DONE , rmaker_user_mapping_data -> user_id ,
96
- strlen (rmaker_user_mapping_data -> user_id ) + 1 );
97
105
esp_rmaker_user_mapping_cleanup_data ();
98
106
esp_event_handler_unregister (RMAKER_COMMON_EVENT , RMAKER_MQTT_EVENT_PUBLISHED ,
99
107
& esp_rmaker_user_mapping_event_handler );
@@ -108,7 +116,7 @@ static void esp_rmaker_user_mapping_cb(void *priv_data)
108
116
return ;
109
117
}
110
118
esp_event_handler_register (RMAKER_COMMON_EVENT , RMAKER_MQTT_EVENT_PUBLISHED ,
111
- & esp_rmaker_user_mapping_event_handler , NULL );
119
+ & esp_rmaker_user_mapping_event_handler , data );
112
120
char publish_payload [200 ];
113
121
json_gen_str_t jstr ;
114
122
json_gen_str_start (& jstr , publish_payload , sizeof (publish_payload ), NULL , NULL );
@@ -200,6 +208,11 @@ esp_err_t esp_rmaker_start_user_node_mapping(char *user_id, char *secret_key)
200
208
return ESP_FAIL ;
201
209
}
202
210
211
+ esp_err_t esp_rmaker_reset_user_node_mapping (void )
212
+ {
213
+ return esp_rmaker_start_user_node_mapping (USER_RESET_ID , USER_RESET_KEY );
214
+ }
215
+
203
216
int esp_rmaker_user_mapping_handler (uint32_t session_id , const uint8_t * inbuf , ssize_t inlen , uint8_t * * outbuf , ssize_t * outlen , void * priv_data )
204
217
{
205
218
Rainmaker__RMakerConfigPayload * data ;
0 commit comments