Trackball based on the NXP LPC11U24 and the ADNS-9500
Dependencies: ADNS9500 USBDevice mbed 25LCxxx_SPI
Diff: main.cpp
- Revision:
- 5:c7056267daa7
- Parent:
- 2:72a8d2b11320
- Child:
- 6:4cb2c9a3abcd
--- a/main.cpp Thu Dec 13 03:10:46 2012 +0000 +++ b/main.cpp Sun Dec 16 18:38:20 2012 +0000 @@ -3,8 +3,13 @@ /* * type, VID, PID, release */ + USBMouse mouse( REL_MOUSE, 0x192f, 0x0000, 0x0001 ) ; +//We declare a USBHID device. By default input and output reports are 64 bytes long. +USBHID hid(8, 8); + + /* * mosi miso sclk ncs FREQ, motion */ @@ -37,27 +42,45 @@ mouse.press(MOUSE_LEFT); } void btn_l_release(){ - mouse.release(MOUSE_LEFT); + //mouse.release(MOUSE_LEFT); } void btn_m_press(){ - mouse.press(MOUSE_MIDDLE); + //mouse.press(MOUSE_MIDDLE); } void btn_m_release(){ - mouse.release(MOUSE_MIDDLE); + //mouse.release(MOUSE_MIDDLE); } void btn_r_press(){ - mouse.press(MOUSE_RIGHT); + //mouse.press(MOUSE_RIGHT); } void btn_r_release(){ - mouse.release(MOUSE_RIGHT); + //mouse.release(MOUSE_RIGHT); } - +void set( uint8_t attrib, uint8_t *val ){ + switch (attrib){ + case CHAT_MOTION_DEFAULT_CPI: + default_motion_cpi = *val; + break; + case CHAT_Z_DEFAULT_CPI: + default_z_cpi = *val; + break; + default: + // FIXME: error handling. + printf("crap\r\n"); + } +} + +void get( uint8_t attrib ){ +} + int main(void) { + send_rep.length = 8; + btn_hr.rise(&btn_hr_press); btn_hr.fall(&btn_hr_release); @@ -92,6 +115,22 @@ while (true) { + //try to read a msg + if(hid.readNB(&recv_rep)) { + led4 = !led4; + switch (recv_rep.data[0]){ + case CHAT_SET: + set(recv_rep.data[1],&recv_rep.data[2]); + break; + case CHAT_GET: + get(recv_rep.data[1]); + break; + default: + // FIXME: error handling. + printf("crap\r\n"); + } + } + if (motion_triggered) { led1 = !led1; motion_triggered = false; @@ -103,10 +142,10 @@ * so we are helping it out with the y axis. */ if( z_axis_active ){ - mouse.scroll( - dy ); + //////mouse.scroll( - dy ); } else{ - mouse.move( dx, - dy ); + //////mouse.move( dx, - dy ); } } }