// TODO: Need to call algorithm module to subscribe the enable sensor. static void SensorEnable(ASensorType_t sen) { int v = (int)sen; int set; if (v < 32) { set = (1<<v); SensorState[0] |= set; } else { set = (1<<(v-32)); SensorState[1] |= set; } // Why hardcode significant motion enable ? SensorState[0] |= 1 << SENSOR_SIGNIFICANT_MOTION; /* Now subscribe to the algorithm to enable this sensor */ Algorithm_SubscribeSensor(sen); }
void DebugTestSensorSubscription(void) { osp_bool_t privateSensor = FALSE; uint32_t mask; if ( (subscribeSensorReq == -1) && (unsubscribeSensorReq == -1 ) ) return; if ( subscribeSensorReq != -1 ) { // Handle subscription privateSensor = IsPrivateAndroidSensor(subscribeSensorReq); if ( privateSensor ) { int PSensor = M_AndroidToPSensorBase(subscribeSensorReq); mask = 0x1UL << PSensor; if ( _subscribedPrivateSensors & mask ) { D0_printf("\n%s: Requested Sensor 0x%x already subscribed\r\n", __FUNCTION__, subscribeSensorReq); subscribeSensorReq = -1; //reset flag return; // already subscribed } else { // update private subscription bit mask _subscribedPrivateSensors |= mask; } } else { mask = 0x1UL << subscribeSensorReq; if ( _subscribedAndroidSensors & mask ) { D0_printf("\n%s: Requested Sensor 0x%x already subscribed\r\n", __FUNCTION__, subscribeSensorReq); subscribeSensorReq = -1; //reset flag return; // already subscribed } else { // update android subscription bit mask _subscribedAndroidSensors |= mask; } } // Now subscribe the sensor Algorithm_SubscribeSensor( (ASensorType_t) subscribeSensorReq); subscribeSensorReq = -1; //reset flag } // Handle un-subscription request if ( unsubscribeSensorReq != -1 ) { // handle unsubscription uint32_t mask; privateSensor = IsPrivateAndroidSensor(unsubscribeSensorReq); if ( privateSensor ) { int PSensor = M_AndroidToPSensorBase(unsubscribeSensorReq); mask = 0x1UL << PSensor ; if ( !(_subscribedPrivateSensors & mask) ) { D0_printf("\n%s: Requested sensor 0x%x is not subscribed\r\n", __FUNCTION__, unsubscribeSensorReq); unsubscribeSensorReq = -1; //reset flag return; // Sensor is not currently subscribed so cannot un-subscribe } else { _subscribedPrivateSensors &= ~mask; // clear the subscription bit mask } } else { mask = 0x1 << unsubscribeSensorReq; if ( !(_subscribedAndroidSensors & mask) ) { D0_printf("\n%s: Requested sensor 0x%x is not subscribed\r\n", __FUNCTION__, unsubscribeSensorReq); unsubscribeSensorReq = -1; return; } else { _subscribedAndroidSensors &= ~mask; // clear the subscription bit mask } } // Now un-subscribe the sensor Algorithm_UnsubscribeSensor((ASensorType_t) unsubscribeSensorReq); unsubscribeSensorReq = -1; // reset flag } D0_printf("SensorsSubscribed PrivateSensor = 0x%x, AndroidSensor = 0x%x\r\n", _subscribedPrivateSensors, _subscribedAndroidSensors); }