Changeset 15 in flair-src for trunk/lib/FlairMeta/src/MetaDualShock3_impl.cpp
- Timestamp:
- 04/08/16 15:40:57 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/FlairMeta/src/MetaDualShock3_impl.cpp
r10 r15 29 29 using namespace flair::meta; 30 30 31 MetaDualShock3_impl::MetaDualShock3_impl(MetaDualShock3* self,string name): IODevice((IODevice*)self,name) { 32 joy_ref=new JoyReference(self->GetTab()->NewRow(),"consignes joy"); 33 this->self=self; 34 joy_init=false; 35 wasRollTrimUpButtonPressed=false; 36 wasRollTrimDownButtonPressed=false; 37 wasPitchTrimUpButtonPressed=false; 38 wasPitchTrimDownButtonPressed=false; 31 MetaDualShock3_impl::MetaDualShock3_impl(MetaDualShock3 *self, string name) 32 : IODevice((IODevice *)self, name) { 33 joy_ref = new JoyReference(self->GetTab()->NewRow(), "consignes joy"); 34 this->self = self; 35 joy_init = false; 36 wasRollTrimUpButtonPressed = false; 37 wasRollTrimDownButtonPressed = false; 38 wasPitchTrimUpButtonPressed = false; 39 wasPitchTrimDownButtonPressed = false; 39 40 } 40 41 41 MetaDualShock3_impl::~MetaDualShock3_impl() { 42 MetaDualShock3_impl::~MetaDualShock3_impl() {} 42 43 44 // receives updates from the controler 45 void MetaDualShock3_impl::UpdateFrom(const io_data *data) { 46 cvmatrix *input = (cvmatrix *)data; 47 48 // on prend une fois pour toute le mutex et on fait des accès directs 49 input->GetMutex(); 50 51 // up 52 if (self->IsButtonPressed(12)) { 53 if (!wasPitchTrimDownButtonPressed) { 54 joy_ref->PitchTrimDown(); 55 wasPitchTrimDownButtonPressed = true; 56 } 57 } else { 58 wasPitchTrimDownButtonPressed = false; 59 } 60 61 // down 62 if (self->IsButtonPressed(13)) { 63 if (!wasPitchTrimUpButtonPressed) { 64 joy_ref->PitchTrimUp(); 65 wasPitchTrimUpButtonPressed = true; 66 } 67 } else { 68 wasPitchTrimUpButtonPressed = false; 69 } 70 71 // right 72 if (self->IsButtonPressed(15)) { 73 if (!wasRollTrimUpButtonPressed) { 74 joy_ref->RollTrimUp(); 75 wasRollTrimUpButtonPressed = true; 76 } 77 } else { 78 wasRollTrimUpButtonPressed = false; 79 } 80 81 // left 82 if (self->IsButtonPressed(14)) { 83 if (!wasRollTrimDownButtonPressed) { 84 joy_ref->RollTrimDown(); 85 wasRollTrimDownButtonPressed = true; 86 } 87 } else { 88 wasRollTrimDownButtonPressed = false; 89 } 90 91 if (!getFrameworkManager()->ConnectionLost()) { 92 input->GetMutex(); 93 joy_ref->SetRollAxis(input->ValueNoMutex(0, 0)); 94 joy_ref->SetPitchAxis(input->ValueNoMutex(1, 0)); 95 joy_ref->SetYawAxis(input->ValueNoMutex(2, 0)); 96 joy_ref->SetAltitudeAxis(input->ValueNoMutex(3, 0)); 97 input->ReleaseMutex(); 98 } else { 99 joy_ref->SetRollAxis(0); 100 joy_ref->SetPitchAxis(0); 101 joy_ref->SetYawAxis(0); 102 joy_ref->SetAltitudeAxis(0); 103 } 104 input->ReleaseMutex(); 105 106 joy_ref->Update(data->DataTime()); 107 108 if (!joy_init) { 109 self->TargetEthController::FlashLed(1, 10, 10); 110 joy_init = true; 111 } 43 112 } 44 45 //receives updates from the controler46 void MetaDualShock3_impl::UpdateFrom(const io_data *data) {47 cvmatrix *input=(cvmatrix*)data;48 49 //on prend une fois pour toute le mutex et on fait des accès directs50 input->GetMutex();51 52 //up53 if(self->IsButtonPressed(12)) {54 if(!wasPitchTrimDownButtonPressed) {55 joy_ref->PitchTrimDown();56 wasPitchTrimDownButtonPressed=true;57 }58 } else {59 wasPitchTrimDownButtonPressed=false;60 }61 62 //down63 if(self->IsButtonPressed(13)) {64 if(!wasPitchTrimUpButtonPressed) {65 joy_ref->PitchTrimUp();66 wasPitchTrimUpButtonPressed=true;67 }68 } else {69 wasPitchTrimUpButtonPressed=false;70 }71 72 //right73 if(self->IsButtonPressed(15)) {74 if(!wasRollTrimUpButtonPressed) {75 joy_ref->RollTrimUp();76 wasRollTrimUpButtonPressed=true;77 }78 } else {79 wasRollTrimUpButtonPressed=false;80 }81 82 //left83 if(self->IsButtonPressed(14)) {84 if(!wasRollTrimDownButtonPressed) {85 joy_ref->RollTrimDown();86 wasRollTrimDownButtonPressed=true;87 }88 } else {89 wasRollTrimDownButtonPressed=false;90 }91 92 if(!getFrameworkManager()->ConnectionLost()) {93 input->GetMutex();94 joy_ref->SetRollAxis(input->ValueNoMutex(0,0));95 joy_ref->SetPitchAxis(input->ValueNoMutex(1,0));96 joy_ref->SetYawAxis(input->ValueNoMutex(2,0));97 joy_ref->SetAltitudeAxis(input->ValueNoMutex(3,0));98 input->ReleaseMutex();99 } else {100 joy_ref->SetRollAxis(0);101 joy_ref->SetPitchAxis(0);102 joy_ref->SetYawAxis(0);103 joy_ref->SetAltitudeAxis(0);104 }105 input->ReleaseMutex();106 107 joy_ref->Update(data->DataTime());108 109 if(!joy_init) {110 self->TargetEthController::FlashLed(1,10,10);111 joy_init=true;112 }113 }
Note:
See TracChangeset
for help on using the changeset viewer.