Næþ'n Lasseter / Mbed 2 deprecated DMX

Dependencies:   TextLCD mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers iface.c Source File

iface.c

00001 #include "mbed.h"
00002 #include "iface.h"
00003 #include "memory.h"
00004 
00005 Timeout timer;
00006 char keydown = 0;
00007 
00008 extern I2C io;
00009 extern int channelPointer;
00010 extern char* channelData;
00011 extern int waddr;
00012 extern int raddr;
00013 
00014 void nextChannel() {
00015     if (channelPointer < (CHANNELCOUNT - 1)) channelPointer++;
00016 }
00017 void previousChannel() {
00018     if (channelPointer > 0) channelPointer--;
00019 }
00020 void incrementValue() {
00021     if (channelData[channelPointer] < 255) channelData[channelPointer]++;
00022 }
00023 void decrementValue() {
00024     if (channelData[channelPointer] > 0) channelData[channelPointer]--;
00025 }
00026 void homeChannel() {
00027     channelPointer = 0;
00028 }
00029 void zeroValue() {
00030     channelData[channelPointer] = 0;
00031 }
00032 void maxValue() {
00033     channelData[channelPointer] = 255;
00034 }
00035 
00036 void handle(char key) {
00037     switch(key) {
00038         case 0x11:
00039             homeChannel();
00040             break;
00041         case 0x42:
00042             nextChannel();
00043             break;
00044         case 0x12:
00045             previousChannel();
00046             break;
00047         case 0x21:
00048             incrementValue();
00049             break;
00050         case 0x24:
00051             decrementValue();
00052             break;
00053         case 0x48:
00054             maxValue();
00055             break;
00056         case 0x18:
00057             zeroValue();
00058             break;
00059         case 0x14:
00060             saveMemory();
00061             break;
00062         case 0x44:
00063             loadMemory();
00064             break;
00065     }
00066 }
00067 
00068 void keyhandle() {
00069     if(keydown) {
00070         handle(keydown);
00071         timer.attach_us(&keyhandle, 20000);
00072     }
00073 }
00074 
00075 void keypress() {
00076     char byte0f, bytef0;
00077     io.read(raddr, &byte0f, 1);
00078     bytef0 = 0xF0;
00079     io.write(waddr, &bytef0, 1);
00080     io.read(raddr, &bytef0, 1);
00081     keydown = ~(byte0f | bytef0);
00082     if(keydown) {
00083         handle(keydown);
00084         if((keydown != 0x14) && (keydown != 0x44)) timer.attach_us(&keyhandle, 500000);
00085     }
00086     byte0f = 0x0F;
00087     io.write(waddr, &byte0f, 1);
00088 }