Embedded WebSockets Experiment

Dependencies:   mbed MD5

Revision:
0:6dee052a3fa4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RGBLed.c	Tue Jul 26 05:30:53 2011 +0000
@@ -0,0 +1,81 @@
+#include "RGBLed.h"
+
+RGBLed::RGBLed() : red(p23), green(p22), blue(p21) {
+    red.period(0.001);
+    green.period(0.001);
+    blue.period(0.001);
+
+    setRgb(0.1, 0.1, 0.1);
+}
+
+void RGBLed::setRgb(char *rgb) {
+    float r, g, b;
+    int value;
+
+    value= parseHex(0, *rgb++);
+    value= parseHex(value, *rgb++);
+    r= value / 255.0f;
+
+    value= parseHex(0, *rgb++);
+    value= parseHex(value, *rgb++);
+    g= value / 255.0f;
+
+    value= parseHex(0, *rgb++);
+    value= parseHex(value, *rgb++);
+    b= value / 255.0f;
+
+    setRgb(r, g, b);
+}
+
+void RGBLed::setRgb(float r, float g, float b) {
+    red= 1.0 - r;
+    green= 1.0 - g;
+    blue= 1.0 - b;
+
+    //printf("red:%0.3f green:%0.3f blue%0.3f\n", r, g, b);
+}
+
+int RGBLed::parseHex(int value, char hex) {
+    switch (hex) {
+        case '0':
+            return value<<4;
+        case '1':
+            return value<<4 | 1;
+        case '2':
+            return value<<4 | 2;
+        case '3':
+            return value<<4 | 3;
+        case '4':
+            return value<<4 | 4;
+        case '5':
+            return value<<4 | 5;
+        case '6':
+            return value<<4 | 6;
+        case '7':
+            return value<<4 | 7;
+        case '8':
+            return value<<4 | 8;
+        case '9':
+            return value<<4 | 9;
+        case 'A':
+        case 'a':
+            return value<<4 | 10;
+        case 'B':
+        case 'b':
+            return value<<4 | 11;
+        case 'C':
+        case 'c':
+            return value<<4 | 12;
+        case 'D':
+        case 'd':
+            return value<<4 | 13;
+        case 'E':
+        case 'e':
+            return value<<4 | 14;
+        case 'F':
+        case 'f':
+            return value<<4 | 15;
+        default:
+            return value;
+    }
+}