//--------------------------------------------------------------------+ // CLASS-USBD API (don't require to verify parameters) //--------------------------------------------------------------------+ bool usbh_init(void) { tu_memclr(_usbh_devices, sizeof(usbh_device_t)*(CFG_TUSB_HOST_DEVICE_MAX+1)); //------------- Enumeration & Reporter Task init -------------// _usbh_q = osal_queue_create( &_usbh_qdef ); TU_ASSERT(_usbh_q != NULL); //------------- Semaphore, Mutex for Control Pipe -------------// for(uint8_t i=0; i<CFG_TUSB_HOST_DEVICE_MAX+1; i++) // including address zero { usbh_device_t * const dev = &_usbh_devices[i]; dev->control.sem_hdl = osal_semaphore_create(&dev->control.sem_def); TU_ASSERT(dev->control.sem_hdl != NULL); dev->control.mutex_hdl = osal_mutex_create(&dev->control.mutex_def); TU_ASSERT(dev->control.mutex_hdl != NULL); memset(dev->itf2drv, 0xff, sizeof(dev->itf2drv)); // invalid mapping memset(dev->ep2drv , 0xff, sizeof(dev->ep2drv )); // invalid mapping } // Class drivers init for (uint8_t drv_id = 0; drv_id < USBH_CLASS_DRIVER_COUNT; drv_id++) usbh_class_drivers[drv_id].init(); TU_ASSERT(hcd_init()); hcd_int_enable(TUH_OPT_RHPORT); return true; }
void vam_init(void) { int i; vam_envar_t *p_vam = &p_cms_envar->vam; uint8_t zero_pid[RCP_TEMP_ID_LEN] = {0}; p_vam_envar = p_vam; memset(p_vam, 0, sizeof(vam_envar_t)); memcpy(&p_vam->working_param, &p_cms_param->vam, sizeof(vam_config_t)); if (0 == memcmp(p_cms_param->pid, zero_pid, RCP_TEMP_ID_LEN)){ for (i=0; i<RCP_TEMP_ID_LEN; i++){ p_vam->local.pid[i] = des(RCP_TEMP_ID_LEN-1-i); } } else { memcpy(p_vam->local.pid, p_cms_param->pid, RCP_TEMP_ID_LEN); } OSAL_MODULE_DBGPRT(MODULE_NAME, OSAL_DEBUG_INFO, "PID: %02x %02x %02x %02x\r\n", \ p_vam->local.pid[0], p_vam->local.pid[1], p_vam->local.pid[2], p_vam->local.pid[3]); INIT_LIST_HEAD(&p_vam->neighbour_list); INIT_LIST_HEAD(&p_vam->sta_free_list); for(i = 0;i< VAM_NEIGHBOUR_MAXNUM;i++){ list_add_tail(&p_vam->remote[i].list, &p_vam->sta_free_list); } /* os object for vam */ p_vam->queue_vam = osal_queue_create("q-vam", VAM_QUEUE_SIZE); osal_assert(p_vam->queue_vam != RT_NULL); p_vam->task_vam = osal_task_create("t-vam", vam_thread_entry, p_vam, RT_VAM_THREAD_STACK_SIZE, RT_VAM_THREAD_PRIORITY); osal_assert(p_vam->task_vam != RT_NULL) p_vam->timer_send_bsm = osal_timer_create("tm-sb",timer_send_bsm_callback,p_vam,\ BSM_SEND_PERIOD_DEFAULT, RT_TIMER_FLAG_PERIODIC); osal_assert(p_vam->timer_send_bsm != NULL); p_vam->timer_bsm_pause = osal_timer_create("tm-bp",timer_bsm_pause_callback,p_vam,\ BSM_PAUSE_HOLDTIME_DEFAULT,RT_TIMER_FLAG_ONE_SHOT); osal_assert(p_vam->timer_bsm_pause != RT_NULL); p_vam->timer_send_evam = osal_timer_create("tm-se",timer_send_evam_callback, p_vam,\ EVAM_SEND_PERIOD_DEFAULT,RT_TIMER_FLAG_PERIODIC); osal_assert(p_vam->timer_send_evam != RT_NULL); p_vam->timer_gps_life = osal_timer_create("tm-gl",timer_gps_life_callback,p_vam,\ BSM_GPS_LIFE_DEFAULT, RT_TIMER_FLAG_ONE_SHOT); osal_assert(p_vam->timer_gps_life != RT_NULL); p_vam->timer_neighbour_life = osal_timer_create("tm-nl",timer_neigh_time_callback,p_vam,\ NEIGHBOUR_LIFE_ACCUR, RT_TIMER_FLAG_PERIODIC); osal_assert(p_vam->timer_neighbour_life != RT_NULL); p_vam->sem_sta = osal_sem_create("s-sta", 1); osal_assert(p_vam->sem_sta != RT_NULL); OSAL_MODULE_DBGPRT(MODULE_NAME, OSAL_DEBUG_INFO, "module initial\n"); }