Lines Matching refs:node
75 struct usbd_bt_node *node = (usbd_bt_node *)malloc(sizeof(usbd_bt_node));
76 if (node == NULL) {
77 PRINT_ERR("Binary tree node alloc failed!\n");
81 (void)memset_s(&node->info, sizeof(node->info), 0, sizeof(node->info));
82 node->info.port_no = info->port_no;
83 node->info.nameunit = info->nameunit;
84 node->lbt_node = NULL;
85 node->rbt_node = NULL;
87 BT_DEBUG("[create node] %p %s %d\n", node, node->info.nameunit, node->info.port_no);
88 return (node);
92 usbd_free_bt_node(usbd_bt_node *node)
94 BT_DEBUG("[free node] %p %s %d\n", node, node->info.nameunit, node->info.port_no);
96 node->info.nameunit = NULL;
97 node->info.port_no = 0;
98 node->lbt_node = NULL;
99 node->rbt_node = NULL;
101 free(node);
105 usbd_release_bt_node(usbd_bt_node *node)
107 if (node == NULL)
110 usbd_release_bt_node(node->lbt_node);
111 usbd_release_bt_node(node->rbt_node);
113 if (node->info.nameunit != NULL)
114 usbd_free_bt_node(node);
118 usbd_pre_order_bt_node(usbd_bt_node *node, struct node_info *info)
122 if (node == NULL) {
126 if (node->info.nameunit == info->nameunit) {
127 if (node->info.port_no == info->port_no) {
128 return (node);
132 l_node = usbd_pre_order_bt_node(node->lbt_node, info);
136 r_node = usbd_pre_order_bt_node(node->rbt_node, info);
146 usbd_pre_order_hub_node(usbd_bt_node *node, char *devname, uint8_t *port_num)
150 if (node == NULL) {
154 if (!strncmp(node->info.nameunit, "uhub", strlen("uhub"))) {
155 BT_DEBUG("[Hub Node] %p %s %d %d\n", node, node->info.nameunit, node->info.port_no, *port_num);
156 if (node->lbt_node == NULL) {
159 if (!strncmp(node->lbt_node->info.nameunit, devname, strlen(devname))) {
166 return (node->lbt_node);
170 l_node = usbd_pre_order_hub_node(node->lbt_node, devname, port_num);
174 r_node = usbd_pre_order_hub_node(node->rbt_node, devname, port_num);
182 usbd_per_order_hub_quantity(usbd_bt_node *node, uint8_t *port_qty)
184 if (node == NULL) {
188 if (!strncmp(node->info.nameunit, "uhub", strlen("uhub"))) {
189 if (node->lbt_node == NULL) {
192 if (strncmp(node->lbt_node->info.nameunit, "uhub", strlen("uhub"))) {
198 usbd_per_order_hub_quantity(node->lbt_node, port_qty);
199 usbd_per_order_hub_quantity(node->rbt_node, port_qty);
215 usbd_bt_node *node = usbd_pre_order_hub_node(tree, devname, port_num);
217 if ((node != NULL) && f_find_device) {
219 return (node);
226 usbd_insert_bt_node(usbd_bt_node *node, usbd_bt_tree tree, struct node_info *parent_info)
230 if ((node == NULL) || (tree == NULL) || (parent_info == NULL))
239 if (parent_node->info.nameunit == node->info.nameunit) { /* The same hub node. */
240 parent_node->rbt_node = node;
242 parent_node->lbt_node = node;
245 BT_DEBUG("[insert node] parent:%p %s %d\n \
248 (parent_node->info.nameunit == node->info.nameunit ? "right" : "left"),
249 node, node->info.nameunit, node->info.port_no);
269 /* release parent left node */