fixes
authorNIIBE Yutaka <gniibe@fsij.org>
Tue, 13 Aug 2013 08:39:41 +0000 (17:39 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Tue, 13 Aug 2013 08:39:41 +0000 (17:39 +0900)
ChangeLog
src/main.c
tool/neug_check.py

index c9fd9a3..ad0ecd8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2013-08-13  Niibe Yutaka  <gniibe@fsij.org>
 
 2013-08-13  Niibe Yutaka  <gniibe@fsij.org>
 
+       * src/main.c (struct line_coding): Add packed attribute.
+       (usb_cb_ctrl_write_finish): Wake up main thread if it wait
+       on condition variable.
+       (main): Call neug_mode_select in the loop of waiting_connection.
+       Call neug_mode_select in the main loop to allow changing mode
+       while connected.
+
+       * tool/neug_check.py (neug.get_mode): Change the explanation of
+       filter "CRC32 filter".
+
        * src/neug.c (adc_buf): Remove.
        (ep_fill_initial_string): Call noise_source_continuous_test.
        (ep_init): Follow the change of adc_start_conversion.
        * src/neug.c (adc_buf): Remove.
        (ep_fill_initial_string): Call noise_source_continuous_test.
        (ep_init): Follow the change of adc_start_conversion.
index 7d4531f..1c22a09 100644 (file)
@@ -271,6 +271,14 @@ usb_cb_ctrl_write_finish (uint8_t req, uint8_t req_no, uint16_t value,
          chopstx_mutex_unlock (&usb_mtx);
        }
     }
          chopstx_mutex_unlock (&usb_mtx);
        }
     }
+  else if (type_rcp == (CLASS_REQUEST | INTERFACE_RECIPIENT)
+          && index == 0 && USB_SETUP_SET (req)
+          && req_no == USB_CDC_REQ_SET_LINE_CODING)
+    {
+      chopstx_mutex_lock (&usb_mtx);
+      chopstx_cond_signal (&cnd_usb);
+      chopstx_mutex_unlock (&usb_mtx);
+    }
 }
 
 struct line_coding
 }
 
 struct line_coding
@@ -279,7 +287,7 @@ struct line_coding
   uint8_t format;
   uint8_t paritytype;
   uint8_t datatype;
   uint8_t format;
   uint8_t paritytype;
   uint8_t datatype;
-};
+} __attribute__((packed));
 
 static struct line_coding line_coding = {
   115200, /* baud rate: 115200    */
 
 static struct line_coding line_coding = {
   115200, /* baud rate: 115200    */
@@ -828,6 +836,7 @@ main (int argc, char **argv)
          neug_flush ();
          event_flag_signal (&led_event, LED_TWOSHOTS);
          chopstx_usec_wait (5000*1000);
          neug_flush ();
          event_flag_signal (&led_event, LED_TWOSHOTS);
          chopstx_usec_wait (5000*1000);
+         neug_mode_select (line_coding.paritytype);
        }
 
       if (fsij_device_state != FSIJ_DEVICE_RUNNING)
        }
 
       if (fsij_device_state != FSIJ_DEVICE_RUNNING)
@@ -835,16 +844,21 @@ main (int argc, char **argv)
 
       /* The connection opened.  */
       count = 0;
 
       /* The connection opened.  */
       count = 0;
-      /*
-       * No parity is standard.  It means to provide conditioned output.
-       * When parity enabled, it means to provide raw output.
-       */
-      neug_mode_select (line_coding.paritytype); /* 0: None, 1: Odd, 2: Even */
 
       while (1)
        {
          int i;
 
 
       while (1)
        {
          int i;
 
+         /*
+          * No parity is standard.  It means providing conditioned output.
+          * When parity enabled, it means to provide raw output
+          * (CRC32 filtered when odd, direct sample of ADC when even).
+          *
+          * line_coding.paritytype:
+          *   0: None, 1: Odd, 2: Even
+          */
+         neug_mode_select (line_coding.paritytype);
+
          if (fsij_device_state != FSIJ_DEVICE_RUNNING)
            break;
 
          if (fsij_device_state != FSIJ_DEVICE_RUNNING)
            break;
 
index 52af5ec..0733218 100755 (executable)
@@ -67,7 +67,7 @@ class neug(object):
         if mode[0] == 0:
             return "Conditioned"
         elif mode[0] == 1:
         if mode[0] == 0:
             return "Conditioned"
         elif mode[0] == 1:
-            return "Raw data (after filter)"
+            return "Raw data (CRC32 filter)"
         else:
             return "Raw data (ADC samples)"
 
         else:
             return "Raw data (ADC samples)"