]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lib.git/blobdiff - rpp/src/rpp/sci.c
Make the RPP layer thread safe
[pes-rpp/rpp-lib.git] / rpp / src / rpp / sci.c
index 1457c899776f9c44a8c3eeea35ea60634aee6b98..f324c9ad8821f9ebc7b7df9476eb868e3a054816 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013 Czech Technical University in Prague
+/* Copyright (C) 2013, 2015 Czech Technical University in Prague
  *
  * Authors:
  *     - Carlos Jenkins <carlos@jenkins.co.cr>
@@ -45,55 +45,18 @@ int8_t rpp_sci_init()
 boolean_t rpp_sci_setup(uint32_t baud)
 {
        boolean_t known = FALSE;
+       // FIXME This is a standard list of baud rates. This should include only
+       // tested baud rates.
+       static const uint32_t baud_list[] = {110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200};
 
        if (baud == 0)
                baud = 9600;
-
-       // FIXME This is a standard list of baud rates. This should include only
-       // tested baud rates.
-       switch (baud) {
-       case 110:
-               known = TRUE;
-               break;
-       case 300:
-               known = TRUE;
-               break;
-       case 600:
-               known = TRUE;
-               break;
-       case 1200:
-               known = TRUE;
-               break;
-       case 2400:
-               known = TRUE;
-               break;
-       case 4800:
-               known = TRUE;
-               break;
-       case 9600:
-               known = TRUE;
-               break;
-       case 14400:
-               known = TRUE;
-               break;
-       case 19200:
-               known = TRUE;
-               break;
-       case 28800:
-               known = TRUE;
-               break;
-       case 38400:
-               known = TRUE;
-               break;
-       case 56000:
-               known = TRUE;
-               break;
-       case 57600:
-               known = TRUE;
-               break;
-       case 115200:
-               known = TRUE;
-               break;
+       uint32_t i;
+       for (i = 0; i < ARRAY_SIZE(baud_list); i++) {
+               if (baud == baud_list[i]) {
+                       known = TRUE;
+                       break;
+               }
        }
 
 #ifndef FREERTOS_POSIX
@@ -174,7 +137,7 @@ int32_t rpp_sci_printk(const char *format, ...)
                if (length > sizeof(str))
                        length = sizeof(str);
 
-               drv_sci_send_imm((uint32_t)length, (uint8_t*)str);
+               drv_sci_send_imm((uint32_t)length, (uint8_t *)str);
        }
 
        return length;
@@ -201,7 +164,7 @@ int32_t rpp_sci_printkb(const char *format, ...)
                if (length > sizeof(str))
                        length = sizeof(str);
 
-               return drv_sci_send_try_append((uint32_t)length, (uint8_t*)str);
+               return drv_sci_send_try_append((uint32_t)length, (uint8_t *)str);
 
        }
        return length;
@@ -236,7 +199,7 @@ int32_t rpp_sci_vprintf(const char *format, va_list argList)
                        length = sizeof(str);
                if (drv_sci_send(
                                (uint32_t)length,
-                               (uint8_t*)str,
+                               (uint8_t *)str,
                                portMAX_DELAY) != SUCCESS)
                        return -1;
        }