From e809984eb25d2d969ab4e262533d399664c096cb Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 13 Apr 2011 05:43:57 +0200 Subject: [PATCH] implement firmware part of the protocol remove unnecessary files --- firmware/src/chars.h | 100 ------------------------------------------ firmware/src/edubrm.c | 80 +++++++++++++++++---------------- firmware/src/pbjt.h | 8 ---- firmware/test.py | 70 ----------------------------- software/device.py | 18 ++++---- 5 files changed, 52 insertions(+), 224 deletions(-) delete mode 100644 firmware/src/chars.h delete mode 100644 firmware/src/pbjt.h delete mode 100755 firmware/test.py diff --git a/firmware/src/chars.h b/firmware/src/chars.h deleted file mode 100644 index 3460b03..0000000 --- a/firmware/src/chars.h +++ /dev/null @@ -1,100 +0,0 @@ -static const uint8_t ASCII[][5] = -{ - {0x00, 0x00, 0x00, 0x00, 0x00} // 20 -,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 ! -,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 " -,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 # -,{0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $ -,{0x23, 0x13, 0x08, 0x64, 0x62} // 25 % -,{0x36, 0x49, 0x55, 0x22, 0x50} // 26 & -,{0x00, 0x05, 0x03, 0x00, 0x00} // 27 ' -,{0x00, 0x1c, 0x22, 0x41, 0x00} // 28 ( -,{0x00, 0x41, 0x22, 0x1c, 0x00} // 29 ) -,{0x14, 0x08, 0x3e, 0x08, 0x14} // 2a * -,{0x08, 0x08, 0x3e, 0x08, 0x08} // 2b + -,{0x00, 0x50, 0x30, 0x00, 0x00} // 2c , -,{0x08, 0x08, 0x08, 0x08, 0x08} // 2d - -,{0x00, 0x60, 0x60, 0x00, 0x00} // 2e . -,{0x20, 0x10, 0x08, 0x04, 0x02} // 2f / -,{0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0 -,{0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1 -,{0x42, 0x61, 0x51, 0x49, 0x46} // 32 2 -,{0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3 -,{0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4 -,{0x27, 0x45, 0x45, 0x45, 0x39} // 35 5 -,{0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6 -,{0x01, 0x71, 0x09, 0x05, 0x03} // 37 7 -,{0x36, 0x49, 0x49, 0x49, 0x36} // 38 8 -,{0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9 -,{0x00, 0x36, 0x36, 0x00, 0x00} // 3a : -,{0x00, 0x56, 0x36, 0x00, 0x00} // 3b ; -,{0x08, 0x14, 0x22, 0x41, 0x00} // 3c < -,{0x14, 0x14, 0x14, 0x14, 0x14} // 3d = -,{0x00, 0x41, 0x22, 0x14, 0x08} // 3e > -,{0x02, 0x01, 0x51, 0x09, 0x06} // 3f ? -,{0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @ -,{0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A -,{0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B -,{0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C -,{0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D -,{0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E -,{0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F -,{0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G -,{0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H -,{0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I -,{0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J -,{0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K -,{0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L -,{0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M -,{0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N -,{0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O -,{0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P -,{0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q -,{0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R -,{0x46, 0x49, 0x49, 0x49, 0x31} // 53 S -,{0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T -,{0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U -,{0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V -,{0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W -,{0x63, 0x14, 0x08, 0x14, 0x63} // 58 X -,{0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y -,{0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z -,{0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [ -,{0x02, 0x04, 0x08, 0x10, 0x20} // 5c ¥ -,{0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ] -,{0x04, 0x02, 0x01, 0x02, 0x04} // 5e ^ -,{0x40, 0x40, 0x40, 0x40, 0x40} // 5f _ -,{0x00, 0x01, 0x02, 0x04, 0x00} // 60 ` -,{0x20, 0x54, 0x54, 0x54, 0x78} // 61 a -,{0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b -,{0x38, 0x44, 0x44, 0x44, 0x20} // 63 c -,{0x38, 0x44, 0x44, 0x48, 0x7f} // 64 d -,{0x38, 0x54, 0x54, 0x54, 0x18} // 65 e -,{0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f -,{0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g -,{0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h -,{0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i -,{0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j -,{0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k -,{0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l -,{0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m -,{0x7c, 0x08, 0x04, 0x04, 0x78} // 6e n -,{0x38, 0x44, 0x44, 0x44, 0x38} // 6f o -,{0x7c, 0x14, 0x14, 0x14, 0x08} // 70 p -,{0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q -,{0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r -,{0x48, 0x54, 0x54, 0x54, 0x20} // 73 s -,{0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t -,{0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u -,{0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v -,{0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w -,{0x44, 0x28, 0x10, 0x28, 0x44} // 78 x -,{0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y -,{0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z -,{0x00, 0x08, 0x36, 0x41, 0x00} // 7b { -,{0x00, 0x00, 0x7f, 0x00, 0x00} // 7c | -,{0x00, 0x41, 0x36, 0x08, 0x00} // 7d } -,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e ← -,{0x78, 0x46, 0x41, 0x46, 0x78} // 7f → -}; - diff --git a/firmware/src/edubrm.c b/firmware/src/edubrm.c index d6d396a..3506321 100644 --- a/firmware/src/edubrm.c +++ b/firmware/src/edubrm.c @@ -3,58 +3,64 @@ #include "ssp.h" #include "adc.h" -#include "chars.h" -#include "pbjt.h" - void GetInReport (uint8_t src[], uint32_t length) { + uint8_t i; uint32_t volatile reg = LPC_USB->CmdCode; if (reg & (5<<8)) return; - static int j = 0; - int i; - for (i = 0; i < USB_INSIZE; ++i) { - src[i] = 'A' + i + j; + for (i=0; i<4; ++i) { + uint32_t v = ADCRead(i); + src[i*2 ] = v & 0xff; + src[i*2+1] = (v>>8) & 0xff; } - if (++j>32) j = 0; + // TODO: fix the following - replace IP[i] with real value if input pin (I) + // src[8] = IP[0] + (IP[1]<<1) + (IP[2]<<2) + (IP[3]<<3) + (IP[4]<<4) + (IP[5]<<5) + (IP[6]<<6) + (IP[7]<<7); } void SetOutReport (uint8_t dst[], uint32_t length) { - uint32_t i; + uint8_t which, wavetype, chan, states; + uint16_t duty, mult; + uint32_t freq; + switch (dst[0]) { - - case 0x00: // send chars to display - for (i = 1; dst[i] != 0; ++i) { - if (dst[i] >= 0x20 && dst[i] <= 0x7F) - SSPSend((uint8_t *)ASCII[dst[i]-0x20], 5); - SSPSend((uint8_t *)"\x00", 1); + case 'p': + which = dst[1]; + duty = dst[2] + (dst[3]<<8); + // TODO: set PWM (which) to (duty) + break; + case 'd': + wavetype = dst[1]; + freq = dst[2] + (dst[3]<<8) + (dst[4]<<16) + (dst[5]<<24); + // TODO: set DDS to (wavetype) of (freq) Hz + break; + case 'm': + which = dst[1]; + chan = dst[2]; + mult = dst[3] + (dst[4]<<8); + // TODO: set opamp (which) on channel (chan) with multiplicator (mult) + break; + case 's': + which = dst[1]; + if (dst[2]) { + // TODO: set switch (which) to on + } else { + // TODO: set switch (which) to off } break; - - case 0x01: // clear screen (white) - for (i = 0; i < 84*6; ++i) { - SSPSend((uint8_t *)"\x00", 1); - } + case 'S': + states = dst[1]; + // TODO: set switches to states break; - - case 0x02: // clear screen (black) - for (i = 0; i < 84*6; ++i) { - SSPSend((uint8_t *)"\xFF", 1); - } + case 'o': + which = dst[1]; + // TODO: set output pins to 0 where indicated by (which) + break; + case 'O': + which = dst[1]; + // TODO: set output pins to 1 where indicated by (which) break; - - case 0x03: - switch (dst[1]) { - case 0: SSPSend(pbjt1, 504); break; - case 1: SSPSend(pbjt2, 504); break; - case 2: SSPSend(pbjt3, 504); break; - case 3: SSPSend(pbjt4, 504); break; - case 4: SSPSend(pbjt5, 504); break; - case 5: SSPSend(pbjt6, 504); break; - case 6: SSPSend(pbjt7, 504); break; - case 7: SSPSend(pbjt8, 504); break; - } } } diff --git a/firmware/src/pbjt.h b/firmware/src/pbjt.h deleted file mode 100644 index 581fc1a..0000000 --- a/firmware/src/pbjt.h +++ /dev/null @@ -1,8 +0,0 @@ -static uint8_t *pbjt1 = (uint8_t *)"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xf0\x9e\x01\x81\x8e\xb8\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x44\x44\x6c\xf8\x80\x00\x00\x07\xf8\xaa\x28\x27\x28\xaa\x48\x37\xff\x00\x00\x00\x80\xf8\x6c\x44\x44\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x02\x02\xff\x00\x01\x01\x01\x80\xe0\x3c\x07\x02\x02\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x40\x20\x20\x20\x78\xcf\x03\x03\x02\xc3\x4f\x38\x20\x20\x40\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; -static uint8_t *pbjt2 = (uint8_t *)"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x40\x40\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x20\x20\x60\xc0\x00\x00\x00\x00\x00\x00\xc0\xf8\x2e\xa3\x20\xc0\x27\xbc\x20\xc0\x00\x00\x00\x00\x00\x00\xc0\x60\x20\x20\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x02\x03\x07\x04\x0c\x08\x18\x30\x20\xff\x0d\x12\x2a\x4a\x49\x4a\x2a\xfe\x21\x30\x10\x18\x08\x0c\x04\x07\x03\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x1e\x70\xc0\x80\x00\x80\x80\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x40\x20\x20\x20\xbc\xe7\x01\x01\x01\xe7\xbc\x20\x20\x20\x40\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; -static uint8_t *pbjt3 = (uint8_t *)"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xc0\x60\x38\x0c\x0c\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x03\xe0\x40\x5c\xa2\xa2\xab\xfe\x2a\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x88\x88\xd8\xf0\x80\x00\x9f\xf0\xc0\x01\x02\x02\x04\x07\x3c\xe0\x80\x00\x80\xf0\xd8\x88\x88\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xc1\x21\x20\x21\x3b\x4e\xc4\x0c\x08\x08\xcd\x4f\x2d\x39\x20\x20\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; -static uint8_t *pbjt4 = (uint8_t *)"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xe0\x30\x30\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x0e\x83\x01\x70\x88\x88\xaf\xf8\xa8\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x20\x20\x60\xc0\x3f\xe0\x83\x05\x09\x0a\x12\x1e\x73\xc0\x00\xc0\x60\x20\x20\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x02\x03\xc7\x2c\x38\x3f\x76\x5c\xd8\x18\x10\x10\xdb\x5e\x59\x3f\x32\x22\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x01\x00\x00\x00\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; -static uint8_t *pbjt5 = (uint8_t *)"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xb8\x8e\x81\x01\x9e\xf0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x44\x44\x68\xf8\x80\x00\x00\x00\xff\x37\x48\xaa\x28\x27\x28\xaa\xf8\x07\x00\x00\x80\xf8\x6c\x44\x44\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x02\x02\x07\x3c\xe0\x80\x01\x01\x01\x00\xff\x02\x02\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x40\x20\x20\x38\x4f\xc3\x02\x03\x03\xcf\x78\x20\x20\x20\x40\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; -static uint8_t *pbjt6 = (uint8_t *)"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x40\x40\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x20\x20\x60\xc0\x00\x00\x00\x00\x00\x00\xc0\x20\xbc\x27\xc0\x20\xa3\x2e\xf8\xc0\x00\x00\x00\x00\x00\x00\xc0\x60\x20\x20\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x02\x03\x07\x04\x0c\x08\x18\x10\x30\x21\xfe\x2a\x4a\x49\x4a\x2a\x12\x0d\xff\x20\x30\x18\x08\x0c\x04\x07\x03\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x80\x80\x00\x80\xc0\x70\x1e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x40\x20\x20\x20\xbc\xe7\x01\x01\x01\xe7\xbc\x20\x20\x20\x40\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; -static uint8_t *pbjt7 = (uint8_t *)"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x0c\x0c\x38\x60\xc0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x2a\xfe\xab\xa2\xa2\x5c\x40\xe0\x03\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x88\x88\xd8\xf0\x80\x00\x80\xe0\x3c\x07\x04\x02\x02\x01\xc0\xf0\x9f\x00\x80\xf0\xd8\x88\x88\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x20\x20\x39\x2d\x4f\xcd\x08\x08\x0c\xc4\x4e\x3b\x21\x20\x21\xc1\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; -static uint8_t *pbjt8 = (uint8_t *)"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x30\x30\xe0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\xa8\xf8\xaf\x88\x88\x70\x01\x83\x0e\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x20\x20\x60\xc0\x00\xc0\x73\x1e\x12\x0a\x09\x05\x83\xe0\x3f\xc0\x60\x20\x20\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x22\x32\x3f\x59\x5e\xdb\x10\x10\x18\xd8\x5c\x76\x3f\x38\x2c\xc7\x03\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x01\x00\x00\x00\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; diff --git a/firmware/test.py b/firmware/test.py deleted file mode 100755 index 78146b8..0000000 --- a/firmware/test.py +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/python - -import usb -import time - -usbdev = usb.core.find(idVendor = 0x1fc9, idProduct = 0x1337) - -try: - usbdev.detach_kernel_driver(0) -except: - pass - -usbdev.set_configuration() - -epo = usb.util.find_descriptor( - usbdev.get_interface_altsetting(), - custom_match = lambda e: \ - usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_OUT) - -epi = usb.util.find_descriptor( - usbdev.get_interface_altsetting(), - custom_match = lambda e: \ - usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_IN) - -# print epi.read(64) - -epo.write('\x00 \x00') -epo.write('\x00 Hackerspace \x00') -epo.write('\x00 brmlab \x00') -epo.write('\x00 \x00') -epo.write('\x00 PRESENTS \x00') -epo.write('\x00 \x00') - -time.sleep(1.5) - -epo.write('\x00 \x00') -epo.write('\x00 PEANUT \x00') -epo.write('\x00 BUTTER \x00') -epo.write('\x00 JELLY \x00') -epo.write('\x00 TIME! \x00') -epo.write('\x00 \x00') - -time.sleep(1.7) - -epo.write('\x00 \x00') -epo.write('\x00 PEANUT \x00') -epo.write('\x00 BUTTER \x00') -epo.write('\x00 JELLY \x00') -epo.write('\x00 TIME! \x00') -epo.write('\x00 \x00') - -time.sleep(1.7) - -epo.write('\x00 \x00') -epo.write('\x00 PEANUT \x00') -epo.write('\x00 BUTTER \x00') -epo.write('\x00 JELLY \x00') -epo.write('\x00 TIME! \x00') -epo.write('\x00 \x00') - -time.sleep(1.45) - -# for i in xrange(100): -# epo.write('\x01') -# epo.write('\x02') - -while 1: - for i in xrange(8): - time.sleep(0.1) - epo.write('\x03'+chr(i)) diff --git a/software/device.py b/software/device.py index 14c8a23..f9b3d68 100644 --- a/software/device.py +++ b/software/device.py @@ -25,23 +25,23 @@ class Device: custom_match = lambda e: \ usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_IN) - # sets pwm (which=1,2), (percent=16bit) - def pwm(self, which, percent): - self.epo.write('p' + chr(which) + chr(percent & 0xff) + chr(percent >> 8)) + # sets pwm (which=1,2), (duty=16bit) + def pwm(self, which, duty): + self.epo.write('p' + chr(which) + chr(duty & 0xff) + chr(duty >> 8)) - # sets dds (wave=square,sine,saw1,saw2), (freq=24bit) - def dds(self, wave, freq): - self.epo.write('d' + chr(wave) + chr(freq & 0xff) + chr((freq >> 8) & 0xff) + chr((freq >> 16) & 0xff)) + # sets dds (wave=square,sine,saw1,saw2), (freq=32bit) + def dds(self, wavetype, freq): + self.epo.write('d' + chr(wavetype) + chr(freq & 0xff) + chr((freq >> 8) & 0xff) + chr((freq >> 16) & 0xff) + chr(freq >> 24)) - # set opamp (which=1,2), (chan=6), (mult=16bit?) + # set opamp (which=1,2), (chan=6), (mult=16bit) def opamp(self, which, chan, mult): - self.epo.write('o' + chr(which) + chr(chan) + chr(mult & 0xff) + chr(percent >> 8)) + self.epo.write('m' + chr(which) + chr(chan) + chr(mult & 0xff) + chr(mult >> 8)) # set switch (which=1..8), state=(0,1) def switch(self, which, state): self.epo.write('s' + chr(which) + (state and '\x01' or '\x00')) - # set all switches (states=8bit) + # set all switches (which=8bit) def switches(self, states): self.epo.write('S' + chr(states))