;hid: 0x2341, 0x8036; Arduino Leonardo
;hid: 0x2341, 0x8037; Arduino Micro
hid: 0x16c0, 0x0486, 1; Teensy 3.2
name: "Teensy"

readsize: 64
read: "kbd",     0,  0, u2
read: "kbdch",   0,  2, u2

read: "anlg1",    0,  4, u2; Analog 1
read: "anlg2",    0,  6, u2; Analog 2
read: "anlg3",    0,  8, u2; Analog 3

read: "btn1",    0, 10, u1
read: "btn1ch",  0, 11, u1
read: "btn1tm",  0, 12, u2
;read: "btn2",   0, 14, u1
;read: "btn2ch", 0, 15, u1
;read: "btn2tm", 0, 16, u2

read: "enc1d",   0, 18, s2; Encoder 1
read: "enc1s",   0, 20, s2; Encoder 1
read: "enc2d",   0, 22, s2; Encoder 2
read: "enc2s",   0, 24, s2; Encoder 2

;test loopback
read: "_tst1",  0, 48, flt
read: "_tst2",  0, 52, flt
read: "_tst3",  0, 56, flt
read: "_tst4",  0, 60, u4; Time

expr: "if(and(kbdch, 1), print('Btn 11'));"
expr: "if(and(kbdch, 2), print('Btn 12'));"
expr: "if(and(kbdch, 4), print('Btn 13'));"
expr: "if(and(kbdch, 8), print('Btn 14'));"

expr: "if(and(kbdch, 16), print('Btn 21'));"
expr: "if(and(kbdch, 32), print('Btn 22'));"
expr: "if(and(kbdch, 64), print('Btn 23'));"
expr: "if(and(kbdch, 128), print('Btn 24'));"

expr: "if(and(kbdch, 256), print('Btn 31'));"
expr: "if(and(kbdch, 512), print('Btn 32'));"
expr: "if(and(kbdch, 1024), print('Btn 33'));"
expr: "if(and(kbdch, 2048), print('Btn 34'));"

expr: "if(and(kbdch, 4096), print('Btn 41'));"
expr: "if(and(kbdch, 8192), print('Btn 42'));"
expr: "if(and(kbdch, 16384), print('Btn 43'));"
expr: "if(and(kbdch, 32768), print('Btn 44'));"

expr: "if(btn1, print('Button 1 (', btn1tm, ')'));"
;expr: "if(btn2, print('Button 2 (', btn2tm, ')'));"

expr: "an1=centerex((anlg1-512)/512, 0.25, 1, 0.8);"
expr: "an2=centerex((anlg2-512)/512, 0.25, 1, 0.8);"
expr: "jog(0, an1, an2, 0);"

expr: "if(enc1d, cmd('Machine.Override.Feed.Increase', enc1d/50));"
expr: "if(enc2d, cmd('Machine.Override.Spindle.Increase', enc2d/50));"

writetime: 100
writesize: 64
write: "_hw_work_x",  0, flt 
write: "_hw_work_y",  4, flt
write: "_hw_work_z",  8, flt
write: "_hw_work_a",  12, flt
write: "_hw_work_b",  16, flt
write: "_hw_work_c",  20, flt
write: "_hw_work_u",  24, flt
write: "_hw_work_v",  28, flt
write: "_hw_work_w",  32, flt
write: "_hw_speed",   36, flt
write: "_hw_spindle", 40, flt

exit