Erik Kallen / PositionModule
Committer:
erikkallen
Date:
Tue Oct 19 10:07:15 2010 +0000
Revision:
1:1d2eb2143108
Parent:
0:886002922b6a

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
erikkallen 0:886002922b6a 1 #include "PositionModule.h"
erikkallen 0:886002922b6a 2 #include "Point.h"
erikkallen 0:886002922b6a 3
erikkallen 0:886002922b6a 4 PositionModule::PositionModule(PinName tx, PinName rx):_mouse(tx,rx) {
erikkallen 0:886002922b6a 5 _mouse.frequency(100000);
erikkallen 0:886002922b6a 6 }
erikkallen 0:886002922b6a 7
erikkallen 0:886002922b6a 8 long PositionModule::getX() {
erikkallen 0:886002922b6a 9 updatePosition();
erikkallen 0:886002922b6a 10 return -_ypos;
erikkallen 0:886002922b6a 11 }
erikkallen 0:886002922b6a 12
erikkallen 0:886002922b6a 13 long PositionModule::getY() {
erikkallen 0:886002922b6a 14 updatePosition();
erikkallen 0:886002922b6a 15 return -_xpos;
erikkallen 0:886002922b6a 16 }
erikkallen 0:886002922b6a 17
erikkallen 0:886002922b6a 18 void PositionModule::setZero() {
erikkallen 0:886002922b6a 19 char cmd[1] = {2};
erikkallen 0:886002922b6a 20 _mouse.write(4,cmd,1);
erikkallen 0:886002922b6a 21 }
erikkallen 0:886002922b6a 22
erikkallen 0:886002922b6a 23 long PositionModule::getDistance() {
erikkallen 0:886002922b6a 24 updatePosition();
erikkallen 0:886002922b6a 25 return sqrt((long double)(getX()*getX())+(getY()*getY()));
erikkallen 0:886002922b6a 26 }
erikkallen 0:886002922b6a 27
erikkallen 0:886002922b6a 28 float PositionModule::getHeading() {
erikkallen 0:886002922b6a 29 return Point::XYToDegrees(Point(0,0),Point(getX(),getY()));
erikkallen 0:886002922b6a 30 }
erikkallen 0:886002922b6a 31
erikkallen 0:886002922b6a 32 void PositionModule::updatePosition() {
erikkallen 0:886002922b6a 33 char * buf = new char[8];
erikkallen 0:886002922b6a 34 char cmd[1] = {3};
erikkallen 0:886002922b6a 35 _mouse.read(5,buf,8);
erikkallen 0:886002922b6a 36 _mouse.write(4,cmd,1);
erikkallen 0:886002922b6a 37 _xpos = (long)((buf[0] << 24) + (buf[1] << 16) + ( buf[2] << 8) + buf[3]);
erikkallen 0:886002922b6a 38 _ypos = (long)((buf[4] << 24) + (buf[5] << 16) + ( buf[6] << 8) + buf[7]);
erikkallen 0:886002922b6a 39 wait(0.1);
erikkallen 0:886002922b6a 40 }