Clean up declaration and usage of global variables, mark with a suffix instead of...
authorMalte S. Stretz <mss@apache.org>
Sat, 7 Mar 2009 15:30:38 +0000 (15:30 +0000)
committerMalte S. Stretz <mss@apache.org>
Sat, 7 Mar 2009 15:30:38 +0000 (15:30 +0000)
src/buf.c
src/buf.h
src/dmx.c
src/tlc.c

index f5c5355..e57dd6e 100644 (file)
--- a/src/buf.c
+++ b/src/buf.c
@@ -1,32 +1,15 @@
 #include "buf.h"
 
-char gg_buf_gs[512] = {
-  /* R     G     B */
-   0xFF, 0xFF, 0xFF,  // 01
-   0xFF, 0x00, 0xFF,  // 02
-   0x00, 0x00, 0x00,  // 03
-   0xDD, 0xDD, 0xDD,  // 04
-   0xCC, 0xCC, 0xCC,  // 05
-   0xBB, 0xBB, 0xBB,  // 06
-   0xAA, 0xAA, 0xAA,  // 07
-   0x99, 0x99, 0x99,  // 08
-   0x88, 0x88, 0x88,  // 09
-   0x77, 0x77, 0x77,  // 10
-   0x66, 0x66, 0x66,  // 11
-   0x55, 0x55, 0x55,  // 12
-   0x44, 0x44, 0x44,  // 13
-   0x33, 0x33, 0x33,  // 14
-   0x22, 0x22, 0x22,  // 15
-
-   0x33, 0x00, 0x33   // 16
-
-};
-
-
-#define DC(p) (char)(0x3F * ((char)p - 0) / 100)
-#define DC_RGB(r, g, b, x) { DC(r), DC(g), DC(b) }
-char gg_buf_dc[3] = DC_RGB(
-                          100,
-                           30,
-                           30,
-                           0);
+/*
+ * All channel greyscale data is initialized to zero.
+ */
+volatile char buf_gs__[512];
+
+/*
+ * One dot correction for everything.
+ */
+#define BUF_DC_MAX 0x3F
+#define BUF_DC_R   BUF_DC_MAX
+#define BUF_DC_G   0x12
+#define BUF_DC_B   0x12
+const char buf_dc__[3] = { BUF_DC_R, BUF_DC_G, BUF_DC_B };
index 85f1632..b820df9 100644 (file)
--- a/src/buf.h
+++ b/src/buf.h
@@ -1,7 +1,9 @@
 #pragma once
 
-extern char gg_buf_gs[512];
-extern char gg_buf_dc[3];
+extern volatile char buf_gs__[];
+extern const    char buf_dc__[];
 
+/*
+ * Nothing to do.
+ */
 #define buf_init()
-
index 2594026..b60d37c 100644 (file)
--- a/src/dmx.c
+++ b/src/dmx.c
@@ -83,14 +83,15 @@ void dmx_exec(void)
 
 ///////////////////////////////
 
-enum {
+static enum state {
   STATE_IDLE,
   STATE_SYNC,
   STATE_WAIT,
   STATE_RECV,
   STATE_STOR
-} g_state;
-int16_t g_index;
+};
+static volatile enum state state_;
+static          int16_t index_;
 
 
 void dmx_int_timer0_ovf(void)
@@ -98,11 +99,10 @@ void dmx_int_timer0_ovf(void)
   // Disable this interrupt.
   disable_timer();
 
-  switch (g_state) {
+  switch (state_) {
     case STATE_SYNC: {
       // Line was low for 88 us, all is fine.
-      //mcu_debug_off();
-      g_state = STATE_WAIT;
+      state_ = STATE_WAIT;
       break;
     }
     case STATE_RECV:
@@ -110,7 +110,7 @@ void dmx_int_timer0_ovf(void)
       // We got a timeout, back to Idle.
       disable_usart();
       enable_trigger();
-      g_state = STATE_IDLE;
+      state_ = STATE_IDLE;
       break;
     }
     default: {
@@ -122,23 +122,20 @@ void dmx_int_timer0_ovf(void)
 
 void dmx_int_ext(void)
 {
-  switch (g_state) {
+  switch (state_) {
     case STATE_IDLE: {
       // Only trigger on fallen edge.
       if (!pin_is_set(PIN_DMX_RXD)) {
         // Wait for 88 us.
-        enable_timer(88);
-        mcu_debug_off();
-        //mcu_debug_on();
-        g_state = STATE_SYNC;
+        enable_timer(88);;
+        state_ = STATE_SYNC;
       }
       break;
     }
     case STATE_SYNC: {
       // Got a stray edge while Reset, back to Idle.
       disable_timer();
-      //mcu_debug_off();
-      g_state = STATE_IDLE;
+      state_ = STATE_IDLE;
       break;
     }
     case STATE_WAIT: {
@@ -146,8 +143,7 @@ void dmx_int_ext(void)
       // this interrupt.
       disable_trigger();
       enable_usart();
-            mcu_debug_on();      mcu_debug_off();
-      g_state = STATE_RECV;
+      state_ = STATE_RECV;
       break;
     }
     default: {
@@ -165,31 +161,28 @@ void dmx_int_usart_rxc(void)
   err = UCSRA & bits_value(FE);
   // Read data byte (and clear RXC flag).
   rxd = UDR;
-        
   if (err) {
-  mcu_debug_on();      mcu_debug_off();
     goto last;
   }
 
-  switch (g_state) {
+  switch (state_) {
     case STATE_RECV: {
-      // Check for valid start byte.
-      //if (rxd & (1 << 0)) { mcu_debug_on(); } else { mcu_debug_off(); }
+      // TODO: Check for valid start byte.
       /*if (rxd != 0x00) {
         goto last;
       }*/
-      
+
       // Switch to data storage.
-      g_index = 0;
-      g_state = STATE_STOR;
+      index_ = 0;
+      state_ = STATE_STOR;
       break;
     }
     case STATE_STOR: {
       // Write byte to buffer.
-      gg_buf_gs[g_index] = rxd;
+      buf_gs__[index_] = rxd;
       // Next index.
-      g_index++;
-      if (g_index == 512) {
+      index_++;
+      if (index_ == 512) {
         goto last;
       }
       break;
@@ -204,6 +197,6 @@ last:
   // Either an invalid or the last frame appeared, stop DMX.
   disable_usart();
   enable_trigger();
-  g_state = STATE_IDLE;
+  state_ = STATE_IDLE;
   return;
 }
index 25295c6..15de42d 100644 (file)
--- a/src/tlc.c
+++ b/src/tlc.c
@@ -8,23 +8,23 @@
 
 /////////////////////////////////////////
 
-volatile uint8_t g_data_available;
+static volatile uint8_t data_available_;
 
 /////////////////////////////////////////
 
-volatile uint8_t g_data_shifting;
+static volatile uint8_t data_shifting_;
 void send_data(void);
 void start_gscycle(void);
 void tlc_wait_for_data()
 {
-  if (g_data_shifting) return;
+  if (data_shifting_) return;
   send_data();
   start_gscycle();
   // Continue in background...
 }
 void set_shifting_off(void)
 {
-  g_data_shifting = 0;
+  data_shifting_ = 0;
 }
 
 /////////////////////////////////////////
@@ -108,14 +108,14 @@ void tlc_init(void)
 
 void tlc_set_data_done(void)
 {
-  g_data_available = 1;
+  data_available_ = 1;
 }
 
 /////////////////////////////////////////
 
 void start_gscycle(void)
 {
-  g_data_shifting = 1;
+  data_shifting_ = 1;
   // Start counter with next GS pulse.
   mcu_int_timer1_ocma_enable();
 }
@@ -190,7 +190,7 @@ void send_gs_data(void)
   // painter.
   // This will always point to the start of the current painter data, 
   // starting with the last one.
-  char * painter_gs = gg_buf_gs
+  char * painter_gs = buf_gs__
                     + TLC_N_CHANNELS
                     - TLC_N_CHANNELS_PER_PAINTER;
   // Find the current data byte to shift out, starting with the last one.
@@ -220,7 +220,7 @@ void send_gs_data(void)
     }
 
     // Did we just finish the last (ie. first) painter?
-    if (painter_gs == gg_buf_gs)
+    if (painter_gs == buf_gs__)
       break;
 
     // Move to next painter.
@@ -239,7 +239,7 @@ void send_dc_data(void)
   // values for each color.
   uint8_t dc_out[3][3];
   for (int8_t rgb = 2; rgb >= 0; rgb--) {
-    uint8_t dc_data = gg_buf_dc[rgb] & bits_uint8(1, 1, 1, 1, 1, 1, 0, 0);
+    uint8_t dc_data = buf_dc__[rgb] & bits_uint8(1, 1, 1, 1, 1, 1, 0, 0);
     dc_out[rgb][2] = (dc_data << 0) | (dc_data >> 6);
     dc_out[rgb][1] = (dc_data << 2) | (dc_data >> 4);
     dc_out[rgb][0] = (dc_data << 4) | (dc_data >> 2);
@@ -275,7 +275,7 @@ void send_data(void)
 
   clock_sclk();
 
-  g_data_available = 0;
+  data_available_ = 0;
 }