extern void eom_emsappl_hid_userdef_on_exit_RUN(EOMtheEMSappl* p) { // EOtheCANservice: set straigth mode and force parsing of all packets in the RX queues. eo_canserv_SetMode(eo_canserv_GetHandle(), eocanserv_mode_straight); eo_canserv_ParseAll(eo_canserv_GetHandle()); // stop services // motion-control eo_motioncontrol_Stop(eo_motioncontrol_GetHandle()); eo_motioncontrol_Deactivate(eo_motioncontrol_GetHandle()); // stop tx activity of services that may have been started by callback function // strain... no strain in here // eo_strain_Stop(eo_strain_GetHandle()); // eo_strain_Deactivate(eo_strain_GetHandle()); // skin eo_skin_Stop(eo_skin_GetHandle()); eo_skin_Deactivate(eo_skin_GetHandle()); // mais eo_mais_Stop(eo_mais_GetHandle()); eo_mais_Deactivate(eo_mais_GetHandle()); // inertials eo_inertials2_Stop(eo_inertials2_GetHandle()); eo_inertials2_Deactivate(eo_inertials2_GetHandle()); }
extern eOresult_t eo_skin_Deactivate(EOtheSKIN *p) { if(NULL == p) { return(eores_NOK_nullpointer); } if(eobool_false == p->service.active) { // i force to eomn_serv_state_idle because it may be that state was eomn_serv_state_verified or eomn_serv_state_failureofverify p->service.state = eomn_serv_state_idle; eo_service_hid_SynchServiceState(eo_services_GetHandle(), eomn_serv_category_skin, p->service.state); return(eores_OK); } if(eobool_true == p->service.started) { eo_skin_Stop(p); } eo_skin_SetRegulars(p, NULL, NULL); eo_canmap_DeconfigEntity(eo_canmap_GetHandle(), eoprot_endpoint_skin, eoprot_entity_sk_skin, p->sharedcan.entitydescriptor); eo_canmap_UnloadBoards(eo_canmap_GetHandle(), p->sharedcan.boardproperties); eo_entities_SetNumOfSkins(eo_entities_GetHandle(), 0); p->numofmtbs = 0; uint8_t i=0; for(i=0; i<eomn_serv_skin_maxpatches; i++) { p->skinpatches[i] = NULL; p->patchisrunning[i] = eobool_false; eo_vector_Clear(p->rxdata[i]); } memset(&p->service.servconfig, 0, sizeof(eOmn_serv_configuration_t)); p->service.servconfig.type = eomn_serv_NONE; eo_vector_Clear(p->sharedcan.boardproperties); eo_vector_Clear(p->sharedcan.entitydescriptor); // make sure the timer is not running eo_timer_Stop(p->diagnostics.reportTimer); p->service.active = eobool_false; p->service.state = eomn_serv_state_idle; eo_service_hid_SynchServiceState(eo_services_GetHandle(), eomn_serv_category_skin, p->service.state); return(eores_OK); }
extern void eom_emsappl_hid_userdef_on_entry_ERR(EOMtheEMSappl* p) { // pulse led3 forever at 4 hz. eo_ledpulser_Start(eo_ledpulser_GetHandle(), eo_ledpulser_led_three, EOK_reltime1sec/4, 0); // EOtheCANservice: set straight mode and force parsing of all packets in the RX queues. eo_canserv_SetMode(eo_canserv_GetHandle(), eocanserv_mode_straight); eo_canserv_ParseAll(eo_canserv_GetHandle()); // stop services which may have been started // motion-control eo_motioncontrol_Stop(eo_motioncontrol_GetHandle()); eo_motioncontrol_Deactivate(eo_motioncontrol_GetHandle()); // stop tx activity of services that may have been started by callback function // strain... no strain in here // eo_strain_Stop(eo_strain_GetHandle()); // eo_strain_Deactivate(eo_strain_GetHandle()); // skin eo_skin_Stop(eo_skin_GetHandle()); eo_skin_Deactivate(eo_skin_GetHandle()); // mais eo_mais_Stop(eo_mais_GetHandle()); eo_mais_Deactivate(eo_mais_GetHandle()); // inertials eo_inertials2_Stop(eo_inertials2_GetHandle()); eo_inertials2_Deactivate(eo_inertials2_GetHandle()); // inertials3 eo_inertials3_Stop(eo_inertials3_GetHandle()); eo_inertials3_Deactivate(eo_inertials3_GetHandle()); // temperatures eo_temperatures_Stop(eo_temperatures_GetHandle()); eo_temperatures_Deactivate(eo_temperatures_GetHandle()); }