static int mxt_proc_proximity_msg(struct plugin_ac *p,unsigned long pl_flag)
{
	const struct mxt_config *dcfg = p->dcfg;
	struct device *dev = dcfg->dev;
	struct t72_observer *obs = p->obs;
	int ret;

	dev_info2(dev, "mxt t72 at mxt_proc_proximity_msg flag 0x%lx pl_flag 0x%lx\n",obs->flag,pl_flag);

	//proximity

	if (test_flag(IRAD_FLAG_PROXIMITY_DETECTED, &obs->flag)) {
		proximity_enable(true);
		ret = get_proximity_data();
		if (ret != 0) {
			dev_info(dev, "mxt t72 proximity removed\n");
			clear_flag(IRAD_FLAG_PROXIMITY_DETECTED, &obs->flag);
			p->set_and_clr_flag(p->dev, PL_STATUS_FLAG_PROXIMITY_REMOVED, 0);
		}
		proximity_enable(false);
	}else if (test_flag(/*T72_FLAG_CAL*/T72_FLAG_RESUME, &obs->flag)) {//only check when proximity not detected
		proximity_enable(true);
		ret = get_proximity_data();
		if (ret == 0) {
			dev_info(dev, "mxt t72 proximity detected\n");
			set_flag(IRAD_FLAG_PROXIMITY_DETECTED, &obs->flag);
		}else {
			dev_info(dev, "mxt t72 proximity not detected\n");
			clear_flag(IRAD_FLAG_PROXIMITY_DETECTED, &obs->flag);
		}
		proximity_enable(false);
	}

	return 0;
}
Esempio n. 2
0
actionResponse NavStack::DetectObstacle(Anshu *AnshuPtr,LocStack *Loc){
    struct ultrasonic_sensor_data uss_data;
    uss_data=get_proximity_data();
    AnshuPtr->set_isFrontObs((uss_data.uss_f<24.0)?true:false);
    AnshuPtr->set_isRearObs((uss_data.uss_b<24.0)?true:false);
    AnshuPtr->set_isRightObs((uss_data.uss_r<24.0)?true:false);
    AnshuPtr->set_isLeftObs((uss_data.uss_l<24.0)?true:false);
    ResolveObstacle(AnshuPtr,Loc);
    
    // Following code not implemented.  Was for an alternate implementation of 
    // the bot rangefinders mounted on a servo to rotate around and take measurements.
    //AnshuPtr->setObstacle(obs_f,false,false,false);
    
    //if(AnshuPtr->isObstacle.is_front)
    //Scan
        //Set Pwm to 0
        //wait(25ms)
        // Read sensor data
        // Load into Obstacle variable
        //Increment PWM by 90 and do twice till PWM = 180

    //If for character byte any bit is 1 then obstacle detected

    return Ok;
 }