eObool_t feat_manage_motioncontrol_data(eOipv4addr_t ipv4, eOprotID32_t id32, void* rxdata) { IethResource* mc = NULL; if(NULL == _interface2ethManager) { return eobool_false; } mc = _interface2ethManager->getInterface(ipv4, id32); if(NULL == mc) { char ipinfo[20]; char nvinfo[128]; eo_common_ipv4addr_to_string(ipv4, ipinfo, sizeof(ipinfo)); eoprot_ID2information(id32, nvinfo, sizeof(nvinfo)); yDebug("feat_manage_motioncontrol_data() fails to get a handle of embObjMotionControl for IP = %s and NV = %s", ipinfo, nvinfo); return eobool_false; } if(false == mc->initialised()) { return eobool_false; } else { mc->update(id32, yarp::os::Time::now(), rxdata); } return eobool_true; }
eObool_t feat_manage_skin_data(eOipv4addr_t ipv4, eOprotID32_t id32, void *arrayofcandata) { IethResource* skin; if(NULL == _interface2ethManager) { return eobool_false; } skin = _interface2ethManager->getInterface(ipv4, id32); if(NULL == skin) { char ipinfo[20]; char nvinfo[128]; eo_common_ipv4addr_to_string(ipv4, ipinfo, sizeof(ipinfo)); eoprot_ID2information(id32, nvinfo, sizeof(nvinfo)); yDebug("feat_manage_skin_data() fails to get a handle of embObjSkin for IP = %s and NV = %s", ipinfo, nvinfo); return eobool_false; } if(false == skin->initialised()) { return eobool_false; } else { skin->update(id32, yarp::os::Time::now(), (void *)arrayofcandata); } return eobool_true; }
eObool_t feat_manage_analogsensors_data(eOipv4addr_t ipv4, eOprotID32_t id32, void *data) { IethResource* sensor; if(NULL == _interface2ethManager) { return eobool_false; } sensor = _interface2ethManager->getInterface(ipv4, id32); if(NULL == sensor) { char ipinfo[20]; char nvinfo[128]; eo_common_ipv4addr_to_string(ipv4, ipinfo, sizeof(ipinfo)); eoprot_ID2information(id32, nvinfo, sizeof(nvinfo)); yDebug("feat_manage_analogsensors_data() fails to get a handle of embObjAnalogSensor for IP = %s and NV = %s", ipinfo, nvinfo); return eobool_false; } if(false == sensor->initialised()) { return eobool_false; } else { // data is a EOarray* in case of mais or strain but it is a eOas_inertial_status_t* in case of inertial sensor sensor->update(id32, yarp::os::Time::now(), data); } return eobool_true; }
static void wake(const EOnv* nv) { eOprotID32_t id32 = 0; eOprotProgNumber_t prognum = 0 ; void *mchandler = (void*) feat_MC_handler_get(eo_nv_GetIP(nv), eo_nv_GetID32(nv)); if(NULL == mchandler) { printf("eoMC class not found\n"); return; } id32 = eo_nv_GetID32(nv); prognum = eoprot_endpoint_id2prognum(eo_nv_GetBRD(nv), id32); if(eobool_false == feat_MC_mutex_post(mchandler, prognum) ) { char nvinfo[128]; char ipinfo[20]; char str[256] = {0}; eoprot_ID2information(id32, nvinfo, sizeof(nvinfo)); eo_common_ipv4addr_to_string(eo_nv_GetIP(nv), ipinfo, sizeof(ipinfo)); snprintf(str, sizeof(str),"while releasing mutex for IP %s and NV %s", ipinfo, nvinfo); feat_PrintWarning(str); } }