miscellaneous update (enhance code coherence)

This commit is contained in:
Gatsby Van
2023-12-22 01:25:00 +08:00
parent e6d498687c
commit c1e26fa20b
2 changed files with 30 additions and 8 deletions
+29 -7
View File
@@ -16,6 +16,7 @@
/***************************** Include Files *********************************/ /***************************** Include Files *********************************/
#include <stdlib.h> #include <stdlib.h>
#include <string.h>
#include <stdint.h> #include <stdint.h>
#include <stdbool.h> #include <stdbool.h>
#include "linklayer814_types.h" #include "linklayer814_types.h"
@@ -34,10 +35,16 @@ inline uint32_t L2_GetNodeListLen(NODE_LIST *list) {
/************************** Variable Definitions *****************************/ /************************** Variable Definitions *****************************/
static NODE_ENTRY util_entry; static NODE_ENTRY util_entry;
/************************** Function Prototypes ******************************/ /************************** Function Prototypes ******************************/
/**
* @brief helper function to free node entry.
*/
static void entry_free(void* val){ static void entry_free(void* val){
free(val); free(val);
} }
/**
* @brief helper function to match node entries by nodeIds
*/
static bool entry_match(void* a, void* b){ static bool entry_match(void* a, void* b){
ASSERT(a != NULL); ASSERT(a != NULL);
ASSERT(b != NULL); ASSERT(b != NULL);
@@ -64,11 +71,28 @@ int32_t L2_NodeList_Init(NODE_LIST **list) {
return SUCCESS; return SUCCESS;
} }
/*****************************************************************************/
/**
* @brief Clear all nodes in the node list, free allocated memory.
*
* @param list
*NONE
*
******************************************************************************/
void L2_NodeList_Clear(NODE_LIST *list){ void L2_NodeList_Clear(NODE_LIST *list){
ASSERT(list != NULL); ASSERT(list != NULL);
list_clear(list); list_clear(list);
} }
/*****************************************************************************/
/**
* @brief Completely destroy node list.
*
* @param list
*
* @return NONE
*
******************************************************************************/
void L2_NodeList_Destroy(NODE_LIST *list){ void L2_NodeList_Destroy(NODE_LIST *list){
list_destroy(list); list_destroy(list);
} }
@@ -153,7 +177,7 @@ NODE_ENTRY* L2_AppendNode(NODE_LIST *list, uint8_t nodeId, L2_NODE_TYPE nodeType
* Other Node not exist. * Other Node not exist.
* *
******************************************************************************/ ******************************************************************************/
int32_t L2_DeleteNode(NODE_LIST *list, uint8_t nodeId) { int32_t L2_DeleteNodeById(NODE_LIST *list, uint8_t nodeId) {
ASSERT(list != NULL); ASSERT(list != NULL);
util_entry.nodeInfo.nodeId = nodeId; util_entry.nodeInfo.nodeId = nodeId;
list_node_t* node = list_find(list, &util_entry); list_node_t* node = list_find(list, &util_entry);
@@ -177,7 +201,7 @@ int32_t L2_DeleteNode(NODE_LIST *list, uint8_t nodeId) {
* false node not in the list * false node not in the list
* *
******************************************************************************/ ******************************************************************************/
bool L2_IsNodeInList(NODE_LIST *list, uint8_t nodeId) { bool L2_isNodeInList(NODE_LIST *list, uint8_t nodeId) {
ASSERT(list != NULL); ASSERT(list != NULL);
return (L2_GetNodeById(list, nodeId) != NULL); return (L2_GetNodeById(list, nodeId) != NULL);
} }
@@ -419,11 +443,11 @@ int32_t L2_IterEditNode(NODE_LIST *list, const void *param, int32_t (*operation)
DBG_ERROR("Failed to initialize list iteration process.\n"); DBG_ERROR("Failed to initialize list iteration process.\n");
return EALLOC; return EALLOC;
} }
while (iter->next != NULL) while ((node = list_iterator_next(iter)))
{ {
node = list_iterator_next(iter);
Status = operation((NODE_ENTRY*)node->val, param); Status = operation((NODE_ENTRY*)node->val, param);
if(Status != SUCCESS){ if(Status != SUCCESS){
DBG_ERROR("Error occurred when iteratively edit node entry.\n");
break; break;
} }
} }
@@ -450,13 +474,11 @@ int32_t L2_IterDeleteNode(NODE_LIST *list, bool (*condition)(NODE_ENTRY *)) {
DBG_ERROR("Failed to initialize list iteration process.\n"); DBG_ERROR("Failed to initialize list iteration process.\n");
return EALLOC; return EALLOC;
} }
while (iter->next != NULL) while ((node = list_iterator_next(iter)))
{ {
node = list_iterator_next(iter);
if (condition((NODE_ENTRY*) node->val) == false) { if (condition((NODE_ENTRY*) node->val) == false) {
list_remove(list, node); list_remove(list, node);
} }
node = list_iterator_next(iter);
} }
list_iterator_destroy(iter); list_iterator_destroy(iter);
return SUCCESS; return SUCCESS;
+1 -1
View File
@@ -46,7 +46,7 @@ void L2_NodeList_Destroy(NODE_LIST *list);
uint32_t L2_GetNodeListLen(NODE_LIST *list); uint32_t L2_GetNodeListLen(NODE_LIST *list);
NODE_ENTRY* L2_GetNodeById(NODE_LIST *list, uint8_t nodeId); NODE_ENTRY* L2_GetNodeById(NODE_LIST *list, uint8_t nodeId);
NODE_ENTRY* L2_AppendNode(NODE_LIST *list, uint8_t nodeId, L2_NODE_TYPE nodeType); NODE_ENTRY* L2_AppendNode(NODE_LIST *list, uint8_t nodeId, L2_NODE_TYPE nodeType);
int32_t L2_DeleteNode(NODE_LIST *list, uint8_t nodeId); int32_t L2_DeleteNodeById(NODE_LIST *list, uint8_t nodeId);
int32_t L2_UpdateNodePos(NODE_LIST *list, uint8_t nodeId, const COORD *newPos); int32_t L2_UpdateNodePos(NODE_LIST *list, uint8_t nodeId, const COORD *newPos);
bool L2_isNodeInList(NODE_LIST *list, uint8_t nodeId); bool L2_isNodeInList(NODE_LIST *list, uint8_t nodeId);
int32_t L2_GetNodePos(NODE_LIST *list, uint8_t nodeId, COORD *newPos); int32_t L2_GetNodePos(NODE_LIST *list, uint8_t nodeId, COORD *newPos);