Moved things around and change a couple of names

This commit is contained in:
Kristian Sloth Lauszus 2013-01-17 00:47:19 +01:00
parent 3acafa2634
commit 1cb937b2a1
2 changed files with 44 additions and 40 deletions

40
Wii.cpp
View file

@ -914,15 +914,15 @@ uint8_t WII::getAnalogHat(AnalogHat a) {
#ifdef WIICAMERA #ifdef WIICAMERA
void WII::IRinitialize(){ //Turns on and initialises the IR camera void WII::IRinitialize(){ // Turns on and initialises the IR camera
EnableIRCamera1(); enableIRCamera1();
#ifdef DEBUG #ifdef DEBUG
Notify(PSTR("\r\nEnable IR Camera1 Complete")); Notify(PSTR("\r\nEnable IR Camera1 Complete"));
#endif #endif
delay(80); delay(80);
EnableIRCamera2(); enableIRCamera2();
#ifdef DEBUG #ifdef DEBUG
Notify(PSTR("\r\nEnable IR Camera2 Complete")); Notify(PSTR("\r\nEnable IR Camera2 Complete"));
#endif #endif
@ -934,23 +934,23 @@ void WII::IRinitialize(){ //Turns on and initialises the IR camera
#endif #endif
delay(80); delay(80);
WriteSensitivityBlock1(); writeSensitivityBlock1();
#ifdef DEBUG #ifdef DEBUG
Notify(PSTR("\r\nWrote Sensitivity Block 1")); Notify(PSTR("\r\nWrote Sensitivity Block 1"));
#endif #endif
delay(80); delay(80);
WriteSensitivityBlock2(); writeSensitivityBlock2();
#ifdef DEBUG #ifdef DEBUG
Notify(PSTR("\r\nWrote Sensitivity Block 2")); Notify(PSTR("\r\nWrote Sensitivity Block 2"));
#endif #endif
delay(80); delay(80);
uint8_t mode_num[] = {0x03}; uint8_t mode_num = 0x03;
setWIIModeNumber(mode_num); //change input for whatever mode you want i.e. 0x01, 0x03, or 0x05 setWiiModeNumber(mode_num); // Change input for whatever mode you want i.e. 0x01, 0x03, or 0x05
#ifdef DEBUG #ifdef DEBUG
Notify(PSTR("\r\nSet Wii Mode Number To 0x")); Notify(PSTR("\r\nSet Wii Mode Number To 0x"));
PrintHex<uint8_t>(mode_num[0]); PrintHex<uint8_t>(mode_num);
#endif #endif
delay(80); delay(80);
@ -960,8 +960,8 @@ void WII::IRinitialize(){ //Turns on and initialises the IR camera
#endif #endif
delay(80); delay(80);
setReportMode(false, 0x33); //note wiiMotePitch won't return values anymore because it uses output report 0x31 or 0x35 setReportMode(false, 0x33); // Note wiiMotePitch won't return values anymore because it uses output report 0x31 or 0x35
//setReportMode(false, 0x3f); //for full reporting mode, doesn't work //setReportMode(false, 0x3f); // For full reporting mode, doesn't work yet
#ifdef DEBUG #ifdef DEBUG
Notify(PSTR("\r\nSet Report Mode to 0x33")); Notify(PSTR("\r\nSet Report Mode to 0x33"));
#endif #endif
@ -969,23 +969,23 @@ void WII::IRinitialize(){ //Turns on and initialises the IR camera
Notify(PSTR("\r\nIR enabled and Initialized")); Notify(PSTR("\r\nIR enabled and Initialized"));
} }
void WII::EnableIRCamera1(){ void WII::enableIRCamera1(){
uint8_t cmd_buf[3]; uint8_t cmd_buf[3];
cmd_buf[0] = 0xA2; // HID BT DATA_request (0xA0) | Report Type (Output 0x02) cmd_buf[0] = 0xA2; // HID BT DATA_request (0xA0) | Report Type (Output 0x02)
cmd_buf[1] = 0x13; //output report 13 cmd_buf[1] = 0x13; // Output report 13
cmd_buf[2] = 0x04 | (HIDBuffer[2] & 0x01); // Keep the rumble bit and sets bit 2 cmd_buf[2] = 0x04 | (HIDBuffer[2] & 0x01); // Keep the rumble bit and sets bit 2
HID_Command(cmd_buf, 3); HID_Command(cmd_buf, 3);
} }
void WII::EnableIRCamera2(){ void WII::enableIRCamera2(){
uint8_t cmd_buf[3]; uint8_t cmd_buf[3];
cmd_buf[0] = 0xA2; // HID BT DATA_request (0xA0) | Report Type (Output 0x02) cmd_buf[0] = 0xA2; // HID BT DATA_request (0xA0) | Report Type (Output 0x02)
cmd_buf[1] = 0x1A; //output report 1A cmd_buf[1] = 0x1A; // Output report 1A
cmd_buf[2] = 0x04 | (HIDBuffer[2] & 0x01); // Keep the rumble bit and sets bit 2 cmd_buf[2] = 0x04 | (HIDBuffer[2] & 0x01); // Keep the rumble bit and sets bit 2
HID_Command(cmd_buf, 3); HID_Command(cmd_buf, 3);
} }
void WII::WriteSensitivityBlock1(){ void WII::writeSensitivityBlock1(){
uint8_t buf[9]; uint8_t buf[9];
buf[0] = 0x00; buf[0] = 0x00;
buf[1] = 0x00; buf[1] = 0x00;
@ -1000,7 +1000,7 @@ void WII::WriteSensitivityBlock1(){
writeData(0xB00000, 9, buf); writeData(0xB00000, 9, buf);
} }
void WII::WriteSensitivityBlock2(){ void WII::writeSensitivityBlock2(){
uint8_t buf[2]; uint8_t buf[2];
buf[0] = 0x40; buf[0] = 0x40;
buf[1] = 0x00; buf[1] = 0x00;
@ -1009,11 +1009,11 @@ void WII::WriteSensitivityBlock2(){
} }
void WII::write0x08Value(){ void WII::write0x08Value(){
uint8_t Value[]={0x08}; uint8_t cmd = 0x08;
writeData(0xb00030, 1, Value); writeData(0xb00030, 1, &cmd);
} }
void WII::setWIIModeNumber(uint8_t* mode_number){ //mode_number in hex i.e. 0x03 for mode extended mode void WII::setWiiModeNumber(uint8_t mode_number){ //mode_number in hex i.e. 0x03 for mode extended mode
writeData(0xb00033,1,mode_number); writeData(0xb00033,1,&mode_number);
} }
#endif #endif

42
Wii.h
View file

@ -186,27 +186,13 @@ public:
void statusRequest(); void statusRequest();
/* These are functions for the IR camera */
#ifdef WIICAMERA #ifdef WIICAMERA
void IRinitialize(); //Initialises the camera as per the steps from http://wiibrew.org/wiki/Wiimote#IR_Camera /* These are functions for the IR camera */
void EnableIRCamera1(); //Sets bit 2 of output report 13 void IRinitialize(); // Initialises the camera as per the steps from http://wiibrew.org/wiki/Wiimote#IR_Camera
void EnableIRCamera2(); //Sets bit 2 of output report 1A
void WriteSensitivityBlock1();
void WriteSensitivityBlock2();
void write0x08Value();
void setWIIModeNumber(uint8_t* mode_number);
int8_t IR_state; //stores the value in l2capinbuf[12] (0x08 means IR enabled) int16_t getIRx1() { return IR_object_x1; }; // IR object 1 x position (0-1023)
int16_t IR_object_x1; // IR x position data 10 bits int16_t getIRy1() { return IR_object_y1; }; // IR object 1 y position (0-767)
int16_t IR_object_y1; //IR y position data 10 bits int8_t getIRs1() { return IR_object_s1; }; // IR object 1 size (0-15)
int8_t IR_object_s1; // IR size value
int16_t IR_object_x2;
int16_t IR_object_y2;
int8_t IR_object_s2;
int16_t getIRx1() { return IR_object_x1; }; //IR object 1 x position (0-1023)
int16_t getIRy1() { return IR_object_y1; }; //IR object 1 y position (0-767)
int8_t getIRs1() { return IR_object_s1; }; //IR object 1 size (0-15)
int16_t getIRx2() { return IR_object_x2; }; int16_t getIRx2() { return IR_object_x2; };
int16_t getIRy2() { return IR_object_y2; }; int16_t getIRy2() { return IR_object_y2; };
@ -266,5 +252,23 @@ private:
bool activateNunchuck; bool activateNunchuck;
bool motionValuesReset; // This bool is true when the gyro values has been reset bool motionValuesReset; // This bool is true when the gyro values has been reset
unsigned long timer; unsigned long timer;
#ifdef WIICAMERA
/* Private function and variables for the readings from teh IR Camera */
void enableIRCamera1(); // Sets bit 2 of output report 13
void enableIRCamera2(); // Sets bit 2 of output report 1A
void writeSensitivityBlock1();
void writeSensitivityBlock2();
void write0x08Value();
void setWiiModeNumber(uint8_t mode_number);
int8_t IR_state; //stores the value in l2capinbuf[12] (0x08 means IR enabled)
int16_t IR_object_x1; // IR x position data 10 bits
int16_t IR_object_y1; //IR y position data 10 bits
int8_t IR_object_s1; // IR size value
int16_t IR_object_x2;
int16_t IR_object_y2;
int8_t IR_object_s2;
#endif
}; };
#endif #endif