/** \brief test strlen ** ** test the function ciaaPOSIX_strlen ** **/ void test_ciaaPOSIX_strlen(void) { size_t ret; ret = ciaaPOSIX_strlen("/dev/serial"); TEST_ASSERT_TRUE(11 == ret); ret = ciaaPOSIX_strlen(""); TEST_ASSERT_TRUE(0 == ret); ret = ciaaPOSIX_strlen("/"); TEST_ASSERT_TRUE(1 == ret); ret = ciaaPOSIX_strlen("/dev/s"); TEST_ASSERT_TRUE(6 == ret); }
/** \brief UART initialization ** ** \param[in] baudrate baud rate for uart usb ** \param[in] fifolevel fifo trigger level for uart usb **/ static void uart_init(int32_t baudrate, int32_t fifolevel) { /* change baud rate for uart usb */ ciaaPOSIX_ioctl(fd_uart1, ciaaPOSIX_IOCTL_SET_BAUDRATE, (void *)baudrate); /* change FIFO TRIGGER LEVEL for uart usb */ ciaaPOSIX_ioctl(fd_uart1, ciaaPOSIX_IOCTL_SET_FIFO_TRIGGER_LEVEL, (void *)fifolevel); /* Send to UART controller configuration */ char tempMaxascii[10]; convert_temp_to_ascii((TEMP_MAX)*10, tempMaxascii); char tempMinascii[10]; convert_temp_to_ascii((TEMP_MIN)*10, tempMinascii); const char message[] = "------ Temperature Controller ------\r\n\n"; ciaaPOSIX_write(fd_uart1, message, ciaaPOSIX_strlen(message)); const char message2[] = "Maximum Temperature:\r\n"; ciaaPOSIX_write(fd_uart1, message2, ciaaPOSIX_strlen(message2)); ciaaPOSIX_write(fd_uart1, tempMaxascii, ciaaPOSIX_strlen(tempMaxascii)); const char message3[] = "\nMinimum Temperature:\r\n"; ciaaPOSIX_write(fd_uart1, message3, ciaaPOSIX_strlen(message3)); ciaaPOSIX_write(fd_uart1, tempMinascii, ciaaPOSIX_strlen(tempMinascii)); const char message4[] = "\n\nActual Temperature:\r\n"; ciaaPOSIX_write(fd_uart1, message4, ciaaPOSIX_strlen(message4)); }
/** \brief Send Temperature to UART ** ** \param[in] tempNow temperature to send multiplied by 10 **/ static void sendTemp_Uart(uint32_t tempNow) { char data_to_send[10]; uint8_t outputs; convert_temp_to_ascii(tempNow, data_to_send); ciaaPOSIX_write(fd_uart1, data_to_send, ciaaPOSIX_strlen(data_to_send)); /* Toggle LED 1 */ ciaaPOSIX_read(fd_out, &outputs, 1); outputs ^= LED1; ciaaPOSIX_write(fd_out, &outputs, 1); }
extern void ciaaBlockDevices_addDriver(ciaaDevices_deviceType * driver) { ciaaDevices_deviceType * newDevice; char * newDeviceName; uint8_t length; uint8_t position; /* enter critical section */ /* not needed, only 1 task running */ /* check if more drivers can be added */ if (ciaaBlockDevices_MAXDEVICES > ciaaBlockDevices.position) { /* get position for next device */ position = ciaaBlockDevices.position; /* increment position for next device */ ciaaBlockDevices.position++; /* exit critical section */ /* not needed, only 1 task running */ /* add driver */ ciaaBlockDevices.devstr[position].device = driver; /* initial flags */ ciaaBlockDevices.devstr[position].flags = 0; /* allocate memory for new device */ newDevice = (ciaaDevices_deviceType*) ciaak_malloc(sizeof(ciaaDevices_deviceType)); /* set functions for this device */ newDevice->open = ciaaBlockDevices_open; newDevice->close = ciaaBlockDevices_close; newDevice->ioctl = ciaaBlockDevices_ioctl; newDevice->read = ciaaBlockDevices_read; newDevice->write = ciaaBlockDevices_write; newDevice->lseek = ciaaBlockDevices_lseek; /* store layers information information */ newDevice->layer = (void *) &ciaaBlockDevices.devstr[position]; newDevice->loLayer = (void *) driver; /* store newDevice layer information in the lower layer */ driver->upLayer = newDevice; /* create path string for this device */ length = ciaaPOSIX_strlen(driver->path); length += ciaaPOSIX_strlen(ciaaBlockDevices_prefix); length += 2; /* for the / and the termination null */ /* create path for the new device */ newDeviceName = (char *) ciaak_malloc(length); /* start a new string */ *newDeviceName = 0; /* add prefix, / and the device name */ ciaaPOSIX_strcat(newDeviceName, ciaaBlockDevices_prefix); ciaaPOSIX_strcat(newDeviceName, "/"); ciaaPOSIX_strcat(newDeviceName, driver->path); /* add path to device structure */ newDevice->path = newDeviceName; /* add device */ ciaaDevices_addDevice(newDevice); } else { /* exit critical section */ /* not needed, only 1 task running */ } }