Lines Matching refs:fsm

167 	struct fsm_main *fsm;  member
183 struct fsm_main *fsm; member
209 static int fsm_handler(struct fsm_main *fsm);
210 static char *fsm_state_name(struct fsm_main *fsm, u8 state);
211 static u8 fsm_get_evt_level(struct fsm_main *fsm, u16 event);
213 static void fsm_status_set(struct fsm_main *fsm, enum FSM_STATUS status) in fsm_status_set() argument
215 fsm->status = status; in fsm_status_set()
218 static enum FSM_STATUS fsm_status(struct fsm_main *fsm) in fsm_status() argument
220 return fsm->status; in fsm_status()
261 struct fsm_main *fsm;
269 fsm = list_first_entry(&queue->q, struct fsm_main, list);
270 list_del(&fsm->list);
272 return fsm;
275 static struct fsm_obj *fsm_dequeue_obj(struct fsm_main *fsm)
277 void *d = phl_to_drvpriv(fsm->phl_info);
280 if (list_empty(&fsm->obj_queue.q))
283 _os_spinlock(d, &fsm->obj_queue.lock, _bh, NULL);
284 obj = list_first_entry(&fsm->obj_queue.q, struct fsm_obj, list);
286 _os_spinunlock(d, &fsm->obj_queue.lock, _bh, NULL);
291 static struct fsm_msg *fsm_dequeue_msg(struct fsm_main *fsm) in fsm_dequeue_msg() argument
293 void *d = phl_to_drvpriv(fsm->phl_info); in fsm_dequeue_msg()
296 if (list_empty(&fsm->msg_queue.q)) in fsm_dequeue_msg()
299 _os_spinlock(d, &fsm->msg_queue.lock, _bh, NULL); in fsm_dequeue_msg()
300 msg = list_first_entry(&fsm->msg_queue.q, struct fsm_msg, list); in fsm_dequeue_msg()
302 _os_spinunlock(d, &fsm->msg_queue.lock, _bh, NULL); in fsm_dequeue_msg()
306 static struct fsm_evt *fsm_dequeue_evt(struct fsm_main *fsm) in fsm_dequeue_evt() argument
308 void *d = phl_to_drvpriv(fsm->phl_info); in fsm_dequeue_evt()
311 if (list_empty(&fsm->evt_queue.q)) in fsm_dequeue_evt()
314 _os_spinlock(d, &fsm->evt_queue.lock, _bh, NULL); in fsm_dequeue_evt()
315 evt = list_first_entry(&fsm->evt_queue.q, struct fsm_evt, list); in fsm_dequeue_evt()
317 _os_spinunlock(d, &fsm->evt_queue.lock, _bh, NULL); in fsm_dequeue_evt()
327 int phl_fsm_enqueue_ext(struct fsm_main *fsm, struct fsm_msg *msg, u8 to_head) in phl_fsm_enqueue_ext() argument
329 void *d = phl_to_drvpriv(fsm->phl_info); in phl_fsm_enqueue_ext()
330 struct fsm_queue *queue = &fsm->ext_queue; in phl_fsm_enqueue_ext()
346 struct fsm_msg *phl_fsm_dequeue_ext(struct fsm_main *fsm) in phl_fsm_dequeue_ext() argument
348 void *d = phl_to_drvpriv(fsm->phl_info); in phl_fsm_dequeue_ext()
351 if (list_empty(&fsm->ext_queue.q)) in phl_fsm_dequeue_ext()
354 _os_spinlock(d, &fsm->ext_queue.lock, _bh, NULL); in phl_fsm_dequeue_ext()
355 msg = list_first_entry(&fsm->ext_queue.q, struct fsm_msg, list); in phl_fsm_dequeue_ext()
357 _os_spinunlock(d, &fsm->ext_queue.lock, _bh, NULL); in phl_fsm_dequeue_ext()
365 int phl_fsm_is_ext_queue_empty(struct fsm_main *fsm) in phl_fsm_is_ext_queue_empty() argument
367 return list_empty(&fsm->ext_queue.q); in phl_fsm_is_ext_queue_empty()
370 static int fsm_new_oid(struct fsm_main *fsm) in fsm_new_oid() argument
372 u8 oid = fsm->oid_seq++; in fsm_new_oid()
374 if (fsm->oid_seq == 0xFF) { in fsm_new_oid()
376 fsm->name, oid); in fsm_new_oid()
381 static int fsm_enqueue_list(void *d, struct fsm_main *fsm, in fsm_enqueue_list() argument
393 struct fsm_main *fsm = obj->fsm; in fsm_state_run() local
397 FSM_EV_MSG(fsm, fsm_get_evt_level(fsm, event), in fsm_state_run()
398 "%s-%d %-18s %s\n", fsm->name, obj->oid, in fsm_state_run()
399 fsm_state_name(fsm, obj->state), phl_fsm_evt_name(obj, event)); in fsm_state_run()
401 return fsm->tb.state_tbl[obj->state].fsm_func(obj->custom_obj, in fsm_state_run()
405 static void fsm_remove_all_queuing_msg(struct fsm_main *fsm) in fsm_remove_all_queuing_msg() argument
409 void *d = phl_to_drvpriv(fsm->phl_info); in fsm_remove_all_queuing_msg()
412 while ((msg = fsm_dequeue_msg(fsm)) != NULL) { in fsm_remove_all_queuing_msg()
419 while ((evt = fsm_dequeue_evt(fsm)) != NULL) { in fsm_remove_all_queuing_msg()
426 while ((msg = phl_fsm_dequeue_ext(fsm)) != NULL) { in fsm_remove_all_queuing_msg()
433 static int fsm_cancel_all_running_obj(struct fsm_main *fsm) in fsm_cancel_all_running_obj() argument
437 phl_list_for_loop(obj, struct fsm_obj, &fsm->obj_queue.q, list) { in fsm_cancel_all_running_obj()
438 phl_fsm_gen_msg(fsm->phl_info, obj, NULL, 0, FSM_EV_CANCEL); in fsm_cancel_all_running_obj()
444 u8 phl_fsm_dbg_level(struct fsm_main *fsm, u8 level) in phl_fsm_dbg_level() argument
446 if (fsm->tb.dbg_level >= level) in phl_fsm_dbg_level()
447 return fsm->tb.dbg_level; in phl_fsm_dbg_level()
452 u8 phl_fsm_evt_level(struct fsm_main *fsm, u8 level) in phl_fsm_evt_level() argument
454 if (fsm->tb.evt_level >= level) in phl_fsm_evt_level()
455 return fsm->tb.evt_level; in phl_fsm_evt_level()
460 static u8 fsm_get_evt_level(struct fsm_main *fsm, u16 event) in fsm_get_evt_level() argument
473 if (event > fsm->tb.max_event) in fsm_get_evt_level()
477 return fsm->tb.evt_tbl[event].evt_level; in fsm_get_evt_level()
495 bool phl_fsm_should_stop(struct fsm_main *fsm) in phl_fsm_should_stop() argument
497 return fsm->should_stop; in phl_fsm_should_stop()
502 struct fsm_main *fsm, *fsm_t; in fsm_thread_share() local
511 phl_list_for_loop_safe(fsm, fsm_t, in fsm_thread_share()
513 if (fsm_status(fsm) == FSM_STATUS_ENABLE) in fsm_thread_share()
514 fsm_handler(fsm); in fsm_thread_share()
525 struct fsm_main *fsm = (struct fsm_main *)param; in fsm_thread_alone() local
526 void *d = phl_to_drvpriv(fsm->phl_info); in fsm_thread_alone()
530 _os_sema_down(d, &fsm->msg_ready); in fsm_thread_alone()
531 if (_os_thread_check_stop(d, &(fsm->thread))) in fsm_thread_alone()
534 if (fsm_status(fsm) == FSM_STATUS_ENABLE) in fsm_thread_alone()
535 fsm_handler(fsm); in fsm_thread_alone()
537 _os_thread_wait_stop(d, &fsm->thread); in fsm_thread_alone()
538 FSM_INFO(fsm, "fsm: [%s] thread down\n", fsm->name); in fsm_thread_alone()
543 static struct fsm_obj *fsm_get_obj(struct fsm_main *fsm, u8 oid) in fsm_get_obj() argument
546 void *d = phl_to_drvpriv(fsm->phl_info); in fsm_get_obj()
549 _os_spinlock(d, &fsm->obj_queue.lock, _bh, NULL); in fsm_get_obj()
551 struct fsm_obj, &fsm->obj_queue.q, list) { in fsm_get_obj()
553 _os_spinunlock(d, &fsm->obj_queue.lock, _bh, NULL); in fsm_get_obj()
557 _os_spinunlock(d, &fsm->obj_queue.lock, _bh, NULL); in fsm_get_obj()
565 void *d = phl_to_drvpriv(obj->fsm->phl_info); in phl_fsm_new_msg()
567 if (fsm_status(obj->fsm) != FSM_STATUS_ENABLE) { in phl_fsm_new_msg()
569 obj->fsm->name, phl_fsm_evt_name(obj, event)); in phl_fsm_new_msg()
582 msg->fsm = obj->fsm; in phl_fsm_new_msg()
594 void *d = phl_to_drvpriv(obj->fsm->phl_info); in phl_fsm_sent_msg()
596 if (fsm_status(obj->fsm) != FSM_STATUS_ENABLE) { in phl_fsm_sent_msg()
598 obj->fsm->name, phl_fsm_evt_name(obj, msg->event)); in phl_fsm_sent_msg()
601 fsm_enqueue_list(d, obj->fsm, &obj->fsm->msg_queue, &msg->list); in phl_fsm_sent_msg()
603 if (obj->fsm->tb.mode == FSM_ALONE_THREAD) in phl_fsm_sent_msg()
604 _os_sema_up(d, &obj->fsm->msg_ready); in phl_fsm_sent_msg()
606 _os_sema_up(d, &obj->fsm->root->msg_ready); in phl_fsm_sent_msg()
615 void *d = phl_to_drvpriv(obj->fsm->phl_info); in fsm_new_timer_msg()
632 struct fsm_main *fsm = obj->fsm; in fsm_post_message() local
633 void *d = phl_to_drvpriv(obj->fsm->phl_info); in fsm_post_message()
639 fsm_enqueue_list(d, fsm, &fsm->msg_queue, &msg->list); in fsm_post_message()
640 if (obj->fsm->tb.mode == FSM_ALONE_THREAD) in fsm_post_message()
641 _os_sema_up(d, &fsm->msg_ready); in fsm_post_message()
643 _os_sema_up(d, &fsm->root->msg_ready); in fsm_post_message()
649 struct fsm_main *fsm = (struct fsm_main *)context; in fsm_timer_callback() local
650 void *d = phl_to_drvpriv(fsm->phl_info); in fsm_timer_callback()
655 _os_set_timer(d, &fsm->fsm_timer, CLOCK_UNIT); in fsm_timer_callback()
657 if (fsm->en_clock_num == 0) in fsm_timer_callback()
663 phl_list_for_loop(obj, struct fsm_obj, &fsm->obj_queue.q, list) { in fsm_timer_callback()
665 _os_spinlock(d, &obj->fsm->clock_lock, _bh, NULL); in fsm_timer_callback()
681 FSM_DBG(obj->fsm, "%s: expire in %d ms\n", in fsm_timer_callback()
690 if (fsm_status(fsm) != FSM_STATUS_INITIALIZED && in fsm_timer_callback()
691 fsm_status(fsm) != FSM_STATUS_DISABLE) in fsm_timer_callback()
694 fsm->en_clock_num--; in fsm_timer_callback()
696 _os_spinunlock(d, &obj->fsm->clock_lock, _bh, NULL); in fsm_timer_callback()
705 struct fsm_main *fsm; in phl_fsm_init_fsm() local
726 fsm = (struct fsm_main *)_os_kmem_alloc(d, sizeof(*fsm)); in phl_fsm_init_fsm()
728 if (fsm == NULL) in phl_fsm_init_fsm()
731 _os_mem_set(d, fsm, 0, sizeof(*fsm)); in phl_fsm_init_fsm()
732 _os_mem_cpy(d, &fsm->tb, (void *)tb, sizeof(*tb)); in phl_fsm_init_fsm()
733 _os_mem_cpy(d, &fsm->name, (void *)name, in phl_fsm_init_fsm()
736 fsm->root = root; in phl_fsm_init_fsm()
737 fsm->phl_info = phl_info; in phl_fsm_init_fsm()
739 fsm_init_queue(d, &(fsm->obj_queue)); in phl_fsm_init_fsm()
740 fsm_init_queue(d, &(fsm->msg_queue)); in phl_fsm_init_fsm()
741 fsm_init_queue(d, &(fsm->evt_queue)); in phl_fsm_init_fsm()
742 fsm_init_queue(d, &(fsm->ext_queue)); in phl_fsm_init_fsm()
743 _os_spinlock_init(d, &fsm->clock_lock); in phl_fsm_init_fsm()
745 _os_init_timer(d, &fsm->fsm_timer, fsm_timer_callback, fsm, "fsm"); in phl_fsm_init_fsm()
746 fsm->oid_seq = 1; in phl_fsm_init_fsm()
750 _os_sema_init(d, &fsm->msg_ready, 0); in phl_fsm_init_fsm()
751 fsm_enqueue_list(d, fsm, &root->q_alone_thd, &fsm->list); in phl_fsm_init_fsm()
753 fsm_enqueue_list(d, fsm, &root->q_share_thd, &fsm->list); in phl_fsm_init_fsm()
755 FSM_INFO(fsm, "fsm: [%s] initialized\n", fsm->name); in phl_fsm_init_fsm()
756 fsm_status_set(fsm, FSM_STATUS_INITIALIZED); in phl_fsm_init_fsm()
757 return fsm; in phl_fsm_init_fsm()
767 enum rtw_phl_status phl_fsm_deinit_fsm(struct fsm_main *fsm) in phl_fsm_deinit_fsm() argument
769 void *d = phl_to_drvpriv(fsm->phl_info); in phl_fsm_deinit_fsm()
772 _os_release_timer(d, &fsm->fsm_timer); in phl_fsm_deinit_fsm()
775 list_del(&fsm->list); in phl_fsm_deinit_fsm()
778 struct fsm_obj, &fsm->obj_queue.q, list) { in phl_fsm_deinit_fsm()
789 fsm_deinit_queue(d, &(fsm->obj_queue)); in phl_fsm_deinit_fsm()
790 fsm_deinit_queue(d, &(fsm->msg_queue)); in phl_fsm_deinit_fsm()
791 fsm_deinit_queue(d, &(fsm->evt_queue)); in phl_fsm_deinit_fsm()
792 fsm_deinit_queue(d, &(fsm->ext_queue)); in phl_fsm_deinit_fsm()
793 _os_spinlock_free(d, &fsm->clock_lock); in phl_fsm_deinit_fsm()
795 if (fsm->tb.mode == FSM_ALONE_THREAD) in phl_fsm_deinit_fsm()
796 _os_sema_free(d, &fsm->msg_ready); in phl_fsm_deinit_fsm()
798 FSM_INFO(fsm, "fsm: [%s] uninitilized\n", fsm->name); in phl_fsm_deinit_fsm()
799 _os_kmem_free(d, fsm, sizeof(*fsm)); in phl_fsm_deinit_fsm()
806 struct fsm_main *fsm = obj->fsm; in phl_fsm_evt_name() local
823 if (event > fsm->tb.max_event) in phl_fsm_evt_name()
827 return fsm->tb.evt_tbl[event].name; in phl_fsm_evt_name()
830 static char *fsm_state_name(struct fsm_main *fsm, u8 state) in fsm_state_name() argument
832 if (state > fsm->tb.max_state) in fsm_state_name()
835 return fsm->tb.state_tbl[state].name; in fsm_state_name()
855 struct fsm_main *fsm = obj->fsm; in fsm_obj_switch_in() local
859 obj->state = fsm->tb.state_tbl[0].state; in fsm_obj_switch_in()
860 FSM_INFO(fsm, "%s-%d %-18s -> %s\n", fsm->name, obj->oid, in fsm_obj_switch_in()
861 "switch in", fsm_state_name(fsm, obj->state)); in fsm_obj_switch_in()
875 struct fsm_main *fsm = obj->fsm; in fsm_obj_switch_out() local
879 obj->state = fsm->tb.state_tbl[0].state; in fsm_obj_switch_out()
880 FSM_INFO(fsm, "%s-%d %-18s -> %s\n", fsm->name, obj->oid, in fsm_obj_switch_out()
881 "switch out", fsm_state_name(fsm, obj->state)); in fsm_obj_switch_out()
896 void *phl_fsm_new_obj(struct fsm_main *fsm, in phl_fsm_new_obj() argument
900 void *d = phl_to_drvpriv(fsm->phl_info); in phl_fsm_new_obj()
922 obj->oid = (u8)fsm_new_oid(fsm); in phl_fsm_new_obj()
923 obj->fsm = fsm; in phl_fsm_new_obj()
927 "%s-%d", obj->fsm->name, obj->oid); in phl_fsm_new_obj()
929 fsm_enqueue_list(d, fsm, &fsm->obj_queue, &obj->list); in phl_fsm_new_obj()
944 struct fsm_main *fsm = obj->fsm; in phl_fsm_destory_obj() local
945 void *d = phl_to_drvpriv(fsm->phl_info); in phl_fsm_destory_obj()
975 void *d = phl_to_drvpriv(obj->fsm->phl_info); in fsm_set_alarm()
982 _os_spinlock(d, &obj->fsm->clock_lock, _bh, NULL); in fsm_set_alarm()
985 obj->fsm->en_clock_num++; in fsm_set_alarm()
993 _os_spinunlock(d, &obj->fsm->clock_lock, _bh, NULL); in fsm_set_alarm()
996 FSM_DBG(obj->fsm, "%s:%s now=0x%08x, end=0x%08x, remain=0x%08x\n", in fsm_set_alarm()
1062 void *d = phl_to_drvpriv(obj->fsm->phl_info); in fsm_cancel_alarm()
1065 _os_spinlock(d, &obj->fsm->clock_lock, _bh, NULL); in fsm_cancel_alarm()
1068 obj->fsm->en_clock_num--; in fsm_cancel_alarm()
1074 _os_spinunlock(d, &obj->fsm->clock_lock, _bh, NULL); in fsm_cancel_alarm()
1103 void *d = phl_to_drvpriv(obj->fsm->phl_info); in fsm_pause_alarm()
1105 _os_spinlock(d, &obj->fsm->clock_lock, _bh, NULL); in fsm_pause_alarm()
1107 _os_spinunlock(d, &obj->fsm->clock_lock, _bh, NULL); in fsm_pause_alarm()
1135 void *d = phl_to_drvpriv(obj->fsm->phl_info); in fsm_resume_alarm()
1139 _os_spinlock(d, &obj->fsm->clock_lock, _bh, NULL); in fsm_resume_alarm()
1142 _os_spinunlock(d, &obj->fsm->clock_lock, _bh, NULL); in fsm_resume_alarm()
1176 struct fsm_main *fsm = NULL; in phl_fsm_state_goto() local
1181 fsm = obj->fsm; in phl_fsm_state_goto()
1185 FSM_MSG(fsm, FSM_DBG_DBG, "\n"); in phl_fsm_state_goto()
1186 FSM_MSG(fsm, FSM_DBG_DBG, "%s-%d %-18s -> %s\n", fsm->name, obj->oid, in phl_fsm_state_goto()
1187 fsm_state_name(fsm, obj->state), in phl_fsm_state_goto()
1188 fsm_state_name(fsm, new_state)); in phl_fsm_state_goto()
1194 static void fsm_user_evt_handler(struct fsm_main *fsm) in fsm_user_evt_handler() argument
1196 void *d = phl_to_drvpriv(fsm->phl_info); in fsm_user_evt_handler()
1202 while ((msg = fsm_dequeue_msg(fsm)) != NULL) { in fsm_user_evt_handler()
1205 obj = fsm_get_obj(fsm, msg->oid); in fsm_user_evt_handler()
1209 fsm->name, msg->oid); in fsm_user_evt_handler()
1214 if ((fsm->should_stop == true) && in fsm_user_evt_handler()
1236 static int fsm_update_status(struct fsm_main *fsm) in fsm_update_status() argument
1240 phl_list_for_loop(obj, struct fsm_obj, &fsm->obj_queue.q, list) { in fsm_update_status()
1244 fsm_state_name(fsm, obj->state)); in fsm_update_status()
1252 fsm_status_set(fsm, FSM_STATUS_INITIALIZED); in fsm_update_status()
1257 static int fsm_handler(struct fsm_main *fsm) in fsm_handler() argument
1260 fsm_user_evt_handler(fsm); in fsm_handler()
1262 if (fsm->should_stop == true) in fsm_handler()
1263 fsm_update_status(fsm); in fsm_handler()
1271 char *phl_fsm_fsm_name(struct fsm_main *fsm) in phl_fsm_fsm_name() argument
1273 return fsm->name; in phl_fsm_fsm_name()
1290 void *d = phl_to_drvpriv(obj->fsm->phl_info); in phl_fsm_cancel_obj()
1297 PHL_ERR("%s: alloc msg fail\n", obj->fsm->name); in phl_fsm_cancel_obj()
1408 enum rtw_phl_status phl_fsm_start_fsm(struct fsm_main *fsm) in phl_fsm_start_fsm() argument
1410 void *d = phl_to_drvpriv(fsm->phl_info); in phl_fsm_start_fsm()
1413 phl_list_for_loop(obj, struct fsm_obj, &fsm->obj_queue.q, list) { in phl_fsm_start_fsm()
1416 if (fsm->tb.mode == FSM_ALONE_THREAD) { in phl_fsm_start_fsm()
1417 _os_thread_init(d, &(fsm->thread), fsm_thread_alone, fsm, in phl_fsm_start_fsm()
1419 _os_thread_schedule(d, &(fsm->thread)); in phl_fsm_start_fsm()
1422 _os_set_timer(d, &fsm->fsm_timer, CLOCK_UNIT); in phl_fsm_start_fsm()
1423 fsm->status = FSM_STATUS_READY; in phl_fsm_start_fsm()
1425 fsm_status_set(fsm, FSM_STATUS_ENABLE); in phl_fsm_start_fsm()
1426 FSM_INFO(fsm, "fsm: [%s] started\n", fsm->name); in phl_fsm_start_fsm()
1436 enum rtw_phl_status phl_fsm_stop_fsm(struct fsm_main *fsm) in phl_fsm_stop_fsm() argument
1438 void *d = phl_to_drvpriv(fsm->phl_info); in phl_fsm_stop_fsm()
1442 fsm->should_stop = true; in phl_fsm_stop_fsm()
1445 fsm_cancel_all_running_obj(fsm); in phl_fsm_stop_fsm()
1448 while ((fsm->status != FSM_STATUS_INITIALIZED) && --wait) in phl_fsm_stop_fsm()
1452 FSM_INFO(fsm, "%s: take %dms to disable\n", in phl_fsm_stop_fsm()
1453 fsm->name, (WAIT_TIMES-wait)*WAIT_DUR); in phl_fsm_stop_fsm()
1455 fsm_status_set(fsm, FSM_STATUS_DISABLE); in phl_fsm_stop_fsm()
1457 _os_spinlock(d, &fsm->clock_lock, _bh, NULL); in phl_fsm_stop_fsm()
1458 _os_cancel_timer(d, &fsm->fsm_timer); in phl_fsm_stop_fsm()
1459 _os_spinunlock(d, &fsm->clock_lock, _bh, NULL); in phl_fsm_stop_fsm()
1461 phl_list_for_loop(obj, struct fsm_obj, &fsm->obj_queue.q, list) { in phl_fsm_stop_fsm()
1465 fsm_remove_all_queuing_msg(fsm); in phl_fsm_stop_fsm()
1467 if (fsm->tb.mode == FSM_ALONE_THREAD) { in phl_fsm_stop_fsm()
1468 _os_thread_stop(d, &(fsm->thread)); in phl_fsm_stop_fsm()
1469 _os_sema_up(d, &fsm->msg_ready); in phl_fsm_stop_fsm()
1470 _os_thread_deinit(d, &(fsm->thread)); in phl_fsm_stop_fsm()
1472 fsm->should_stop = false; in phl_fsm_stop_fsm()
1474 FSM_INFO(fsm, "fsm: [%s] stopped\n", fsm->name); in phl_fsm_stop_fsm()
1500 FSM_ERR(obj->fsm, "%s: alloc msg %s fail\n", in phl_fsm_gen_msg()
1510 FSM_ERR(obj->fsm, in phl_fsm_gen_msg()
1544 void *d = phl_to_drvpriv(obj->fsm->phl_info); in phl_fsm_flush_gbl()
1554 FSM_WARN(obj->fsm, "%s: del non replied %s:%s #%d\n", in phl_fsm_flush_gbl()
1587 struct fsm_root *root = obj->fsm->root; in phl_fsm_gbl_msg_announce()
1589 struct fsm_main *fsm = obj->fsm; in phl_fsm_gbl_msg_announce() local
1601 FSM_WARN(fsm, in phl_fsm_gbl_msg_announce()
1617 if (obj->fsm->root->gbl_seq == 0) /* 0 reserved */ in phl_fsm_gbl_msg_announce()
1618 obj->fsm->root->gbl_seq = 1; in phl_fsm_gbl_msg_announce()
1619 obj->my_gbl_req.seq = obj->fsm->root->gbl_seq++; in phl_fsm_gbl_msg_announce()
1671 FSM_WARN(obj->fsm, "%s: doesn't expect reply %s:%s #%d\n", in phl_fsm_gbl_not_reply_num()
1684 FSM_INFO(obj->fsm, "%s: got reply %s:%s #%d\n", in phl_fsm_gbl_not_reply_num()
1713 void *d = phl_to_drvpriv(obj->fsm->phl_info); in phl_fsm_gbl_msg_hold()
1718 FSM_ERR(obj->fsm, "%s: hold %s reach max counter %d (%d)", in phl_fsm_gbl_msg_hold()
1727 FSM_ERR(obj->fsm, "%s: reply %s reach max counter %d (%d)", in phl_fsm_gbl_msg_hold()
1738 FSM_ERR(obj->fsm, "%s: reply %s, alloc mem fail (%d)", in phl_fsm_gbl_msg_hold()
1753 fsm_enqueue_list(d, obj->fsm, &obj->gbl_queue, &p->list); in phl_fsm_gbl_msg_hold()
1755 FSM_DBG(obj->fsm, "%s: require %d ms to handle %s:%s #%d\n", in phl_fsm_gbl_msg_hold()
1783 void *d = phl_to_drvpriv(obj->fsm->phl_info); in phl_fsm_gbl_msg_release()
1795 FSM_INFO(obj->fsm, "%s: reply %s:%s #%d, result %d\n", in phl_fsm_gbl_msg_release()
1800 phl_fsm_gen_msg(obj->fsm->phl_info, p->obj_from, in phl_fsm_gbl_msg_release()
1818 struct fsm_main *fsm, *fsm_t; in fsm_dbg_dump_fsm_queue() local
1823 phl_list_for_loop_safe(fsm, fsm_t, in fsm_dbg_dump_fsm_queue()
1825 _os_snprintf(pstr(ptr), lstr(ptr, len), "\t%4s : %s\n", fsm->name, in fsm_dbg_dump_fsm_queue()
1826 fsm->tb.mode ? "STANDALONE":"SHARE"); in fsm_dbg_dump_fsm_queue()
1828 if (fsm->tb.dump_fsm && detail) { in fsm_dbg_dump_fsm_queue()
1831 fsm->tb.dump_fsm(fsm, ptr, &len); in fsm_dbg_dump_fsm_queue()
1837 static void fsm_dbg_help(struct fsm_main *fsm, char *s, int *sz, bool detail);
1838 static void fsm_dbg_dump_fsm(struct fsm_main *fsm, in fsm_dbg_dump_fsm() argument
1844 _os_snprintf(pstr(ptr), lstr(ptr, len), "\t%4s : %s\n", fsm->name, in fsm_dbg_dump_fsm()
1845 fsm->tb.mode ? "STANDALONE":"SHARE"); in fsm_dbg_dump_fsm()
1847 if (fsm->tb.dump_fsm && detail) { in fsm_dbg_dump_fsm()
1850 fsm->tb.dump_fsm(fsm, ptr, &len); in fsm_dbg_dump_fsm()
1855 static void fsm_dbg_dump_state(struct fsm_main *fsm, in fsm_dbg_dump_state() argument
1862 "[%s] state table\n", fsm->name); in fsm_dbg_dump_state()
1863 for (i = 0; i < fsm->tb.max_state; i++) in fsm_dbg_dump_state()
1865 i, fsm->tb.state_tbl[i].name); in fsm_dbg_dump_state()
1869 static void fsm_dbg_dump_event(struct fsm_main *fsm, in fsm_dbg_dump_event() argument
1884 _os_snprintf(pstr(s), lstr(s, len), "\n[%s] event table max %d\n", fsm->name, fsm->tb.max_event); in fsm_dbg_dump_event()
1885 for (i = 0; i < fsm->tb.max_event-1; i++) in fsm_dbg_dump_event()
1887 fsm->tb.evt_tbl[i].event, fsm->tb.evt_tbl[i].name); in fsm_dbg_dump_event()
1891 static void fsm_dbg_dump_obj(struct fsm_main *fsm, in fsm_dbg_dump_obj() argument
1899 struct fsm_obj, &fsm->obj_queue.q, list) { in fsm_dbg_dump_obj()
1902 fsm->name, obj->oid, fsm_state_name(fsm, obj->state)); in fsm_dbg_dump_obj()
1904 if (fsm->tb.dump_obj && detail) { in fsm_dbg_dump_obj()
1907 fsm->tb.dump_obj(obj->custom_obj, ptr, &len); in fsm_dbg_dump_obj()
1913 static void fsm_dbg_max(struct fsm_main *fsm, char *s, int *sz, bool detail) in fsm_dbg_max() argument
1924 void (*func)(struct fsm_main *fsm, char *s, int *sz, bool detail);
1970 static void fsm_dbg_help(struct fsm_main *fsm, char *s, int *sz, bool detail) in fsm_dbg_help() argument
1972 _fsm_dbg_help(fsm->root, s, sz, false); in fsm_dbg_help()
1978 struct fsm_main *fsm, *fsm_t; in get_fsm_by_name() local
1984 phl_list_for_loop_safe(fsm, fsm_t, in get_fsm_by_name()
1986 if (_os_strlen((u8 *)fsm->name) == len && in get_fsm_by_name()
1987 _os_mem_cmp(d, fsm->name, name, len) == 0) in get_fsm_by_name()
1988 return fsm; in get_fsm_by_name()
1991 phl_list_for_loop_safe(fsm, fsm_t, in get_fsm_by_name()
1993 if (_os_strlen((u8 *)fsm->name) == len && in get_fsm_by_name()
1994 _os_mem_cmp(d, fsm->name, name, len) == 0) in get_fsm_by_name()
1995 return fsm; in get_fsm_by_name()
2000 static u16 fsm_get_evt_id(struct fsm_main *fsm, char *event) in fsm_get_evt_id() argument
2002 void *d = phl_to_drvpriv(fsm->phl_info); in fsm_get_evt_id()
2014 for (i = 0; i < fsm->tb.max_event; i++) { in fsm_get_evt_id()
2015 if (_os_strlen((u8 *)fsm->tb.evt_tbl[i].name) == len && in fsm_get_evt_id()
2017 fsm->tb.evt_tbl[i].name, event, len) == 0) in fsm_get_evt_id()
2018 return fsm->tb.evt_tbl[i].event; in fsm_get_evt_id()
2047 struct fsm_main *fsm = NULL; in phl_fsm_dbg() local
2092 fsm = get_fsm_by_name(root, (char *)fsm_name); in phl_fsm_dbg()
2093 if (fsm == NULL) { in phl_fsm_dbg()
2099 obj = fsm_get_obj(fsm, obj_id); in phl_fsm_dbg()
2118 debug_opt[i].func(fsm, ptr, &len, true); in phl_fsm_dbg()
2126 if ((fsm != NULL) && (obj != NULL) && (fsm->tb.debug != NULL)){ in phl_fsm_dbg()
2129 fsm->tb.debug(obj->custom_obj, &input[3], in phl_fsm_dbg()
2136 ev_id = fsm_get_evt_id(fsm, (char *)opt); in phl_fsm_dbg()
2144 fsm_dbg_dump_event(fsm, ptr, &len, false); in phl_fsm_dbg()
2174 fsm->tb.dbg_level = (u8)i; in phl_fsm_dbg()
2177 phl_fsm_fsm_name(fsm), i); in phl_fsm_dbg()
2181 phl_fsm_fsm_name(fsm), i); in phl_fsm_dbg()
2194 _fsm_dbg_help(fsm->root, ptr, &len, false); in phl_fsm_dbg()