From c09167715e630e264393f126c5abf61b1bbed9dd Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Tue, 9 Jun 2015 09:00:32 +1000 Subject: [PATCH] Indentation fixes - Fix dir-locals so emacs won't inject occasional tabs to case statements. - Fix stray tab indentation in example programs. (Thx @pfalcon for pointing this out) --- .dir-locals.el | 8 +- README.md | 8 +- core/esp_gpio_interrupts.c | 28 ++--- core/include/esp/gpio.h | 40 +++---- core/include/esp/iomux_private.h | 15 ++- examples/blink/blink.c | 16 +-- examples/button/button.c | 26 ++--- examples/http_get/main.c | 120 ++++++++++----------- examples/http_get_ssl/main.c | 179 +++++++++++++++---------------- examples/simple/main.c | 20 ++-- 10 files changed, 234 insertions(+), 226 deletions(-) diff --git a/.dir-locals.el b/.dir-locals.el index 7389fbe..193a918 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -1,5 +1,9 @@ -((c-mode - (c-file-style . "BSD") +( + (nil + (indent-tabs-mode . nil) + ) + (c-mode + (c-file-style . "bsd") (c-basic-offset . 4) ) ) diff --git a/README.md b/README.md index c6d716b..63300ae 100644 --- a/README.md +++ b/README.md @@ -96,6 +96,12 @@ For code submissions based on reverse engineered binary functionality, please ei The best way to write suitable code is to first add documentation somewhere like the [esp8266 wiki](https://github.com/esp8266/esp8266-wiki/) describing factual information gained from reverse engineering - such as register addresses, bit masks, orders of register writes, etc. Then write new functions referring to that documentation as reference material. +## Coding Style + +For new contributions, please use BSD style and indent using 4 spaces. If you're an emacs user then there is a .dir-locals.el file in the root which configures cc-mode. + +Upstream code is left with the indentation and style of the upstream project. + ## Sponsors -Work on esp-open-rtos is sponsored by [SuperHouse Automation](http://superhouse.tv/). +Work on esp-open-rtos has been sponsored by [SuperHouse Automation](http://superhouse.tv/). diff --git a/core/esp_gpio_interrupts.c b/core/esp_gpio_interrupts.c index 80dfa73..99c7640 100644 --- a/core/esp_gpio_interrupts.c +++ b/core/esp_gpio_interrupts.c @@ -14,23 +14,25 @@ you want to use interrupt with. This is simple but it may not be enough in all cases. - void gpio01_interrupt_handler(void) { + void gpio01_interrupt_handler(void) { + // Do something when GPIO 01 changes + } - } + void gpio12_interrupt_handler(void) { + // Do something when GPIO 12 changes + } + + OR - Implement a single function named gpio_interrupt_handler(). This will need to manually check GPIO_STATUS_REG and clear any status bits after handling interrupts. This gives you full control, but you can't combine it with the first approach. - void gpio_interrupt_handler(void) { - } - - - * Part of esp-open-rtos - * Copyright (C) 2015 Superhouse Automation Pty Ltd - * BSD Licensed as described in the file LICENSE + Part of esp-open-rtos + Copyright (C) 2015 Superhouse Automation Pty Ltd + BSD Licensed as described in the file LICENSE */ #include "esp8266.h" @@ -70,9 +72,9 @@ void __attribute__((weak)) IRAM gpio_interrupt_handler(void) uint8_t gpio_idx; while((gpio_idx = __builtin_ffs(status_reg))) { - gpio_idx--; - status_reg &= ~BIT(gpio_idx); - if(GPIO_CTRL_REG(gpio_idx) & GPIO_INT_MASK) - gpio_interrupt_handlers[gpio_idx](); + gpio_idx--; + status_reg &= ~BIT(gpio_idx); + if(GPIO_CTRL_REG(gpio_idx) & GPIO_INT_MASK) + gpio_interrupt_handlers[gpio_idx](); } } diff --git a/core/include/esp/gpio.h b/core/include/esp/gpio.h index b7bbd85..e0b87a0 100644 --- a/core/include/esp/gpio.h +++ b/core/include/esp/gpio.h @@ -30,27 +30,27 @@ INLINED void gpio_enable(const uint8_t gpio_num, const gpio_direction_t directio switch(direction) { case GPIO_INPUT: - iomux_flags = 0; - ctrl_val = GPIO_SOURCE_GPIO; - break; + iomux_flags = 0; + ctrl_val = GPIO_SOURCE_GPIO; + break; case GPIO_OUTPUT: - iomux_flags = IOMUX_OE; - ctrl_val = GPIO_DRIVE_PUSH_PULL|GPIO_SOURCE_GPIO; - break; + iomux_flags = IOMUX_OE; + ctrl_val = GPIO_DRIVE_PUSH_PULL|GPIO_SOURCE_GPIO; + break; case GPIO_OUT_OPEN_DRAIN: - iomux_flags = IOMUX_OE; - ctrl_val = GPIO_DRIVE_OPEN_DRAIN|GPIO_SOURCE_GPIO; - break; + iomux_flags = IOMUX_OE; + ctrl_val = GPIO_DRIVE_OPEN_DRAIN|GPIO_SOURCE_GPIO; + break; case GPIO_INPUT_PULLUP: - iomux_flags = IOMUX_PU; - ctrl_val = GPIO_SOURCE_GPIO; + iomux_flags = IOMUX_PU; + ctrl_val = GPIO_SOURCE_GPIO; } iomux_set_gpio_function(gpio_num, iomux_flags); GPIO_CTRL_REG(gpio_num) = (GPIO_CTRL_REG(gpio_num)&GPIO_INT_MASK) | ctrl_val; if(direction == GPIO_OUTPUT) - GPIO_DIR_SET = BIT(gpio_num); + GPIO_DIR_SET = BIT(gpio_num); else - GPIO_DIR_CLEAR = BIT(gpio_num); + GPIO_DIR_CLEAR = BIT(gpio_num); } /* Disable GPIO on the specified pin, and set it Hi-Z. @@ -71,9 +71,9 @@ INLINED void gpio_disable(const uint8_t gpio_num) INLINED void gpio_write(const uint8_t gpio_num, const uint32_t set) { if(set) - GPIO_OUT_SET = BIT(gpio_num); + GPIO_OUT_SET = BIT(gpio_num); else - GPIO_OUT_CLEAR = BIT(gpio_num); + GPIO_OUT_CLEAR = BIT(gpio_num); } /* Toggle output of a pin @@ -89,9 +89,9 @@ INLINED void gpio_toggle(const uint8_t gpio_num) task's pins, without needing to disable/enable interrupts. */ if(GPIO_OUT_REG & BIT(gpio_num)) - GPIO_OUT_CLEAR = BIT(gpio_num); + GPIO_OUT_CLEAR = BIT(gpio_num); else - GPIO_OUT_SET = BIT(gpio_num); + GPIO_OUT_SET = BIT(gpio_num); } /* Read input value of a GPIO pin. @@ -120,10 +120,10 @@ extern void gpio_interrupt_handler(void); INLINED void gpio_set_interrupt(const uint8_t gpio_num, const gpio_interrupt_t int_type) { GPIO_CTRL_REG(gpio_num) = (GPIO_CTRL_REG(gpio_num)&~GPIO_INT_MASK) - | (int_type & GPIO_INT_MASK); + | (int_type & GPIO_INT_MASK); if(int_type != INT_NONE) { - _xt_isr_attach(INUM_GPIO, gpio_interrupt_handler); - _xt_isr_unmask(1<ai_addr)->sin_addr; - printf("DNS lookup succeeded. IP=%s\r\n", inet_ntoa(*addr)); + if(err != 0 || res == NULL) { + printf("DNS lookup failed err=%d res=%p\r\n", err, res); + if(res) + freeaddrinfo(res); + vTaskDelay(1000 / portTICK_RATE_MS); + failures++; + continue; + } + /* Note: inet_ntoa is non-reentrant, look at ipaddr_ntoa_r for "real" code */ + struct in_addr *addr = &((struct sockaddr_in *)res->ai_addr)->sin_addr; + printf("DNS lookup succeeded. IP=%s\r\n", inet_ntoa(*addr)); - int s = socket(res->ai_family, res->ai_socktype, 0); - if(s < 0) { - printf("... Failed to allocate socket.\r\n"); - freeaddrinfo(res); - vTaskDelay(1000 / portTICK_RATE_MS); - failures++; - continue; - } + int s = socket(res->ai_family, res->ai_socktype, 0); + if(s < 0) { + printf("... Failed to allocate socket.\r\n"); + freeaddrinfo(res); + vTaskDelay(1000 / portTICK_RATE_MS); + failures++; + continue; + } printf("... allocated socket\r\n"); if(connect(s, res->ai_addr, res->ai_addrlen) != 0) { close(s); - freeaddrinfo(res); + freeaddrinfo(res); printf("... socket connect failed.\r\n"); vTaskDelay(4000 / portTICK_RATE_MS); - failures++; + failures++; continue; } printf("... connected\r\n"); - freeaddrinfo(res); + freeaddrinfo(res); - const char *req = - "GET "WEB_URL"\r\n" - "User-Agent: esp-open-rtos/0.1 esp8266\r\n" - "\r\n"; + const char *req = + "GET "WEB_URL"\r\n" + "User-Agent: esp-open-rtos/0.1 esp8266\r\n" + "\r\n"; if (write(s, req, strlen(req) + 1) < 0) { printf("... socket send failed\r\n"); - close(s); - vTaskDelay(4000 / portTICK_RATE_MS); - failures++; - continue; + close(s); + vTaskDelay(4000 / portTICK_RATE_MS); + failures++; + continue; } printf("... socket send success\r\n"); - static char recv_buf[128]; - int r; - do { - bzero(recv_buf, 128); - r = read(s, recv_buf, 127); - if(r > 0) { - printf("%s", recv_buf); - } - } while(r > 0); + static char recv_buf[128]; + int r; + do { + bzero(recv_buf, 128); + r = read(s, recv_buf, 127); + if(r > 0) { + printf("%s", recv_buf); + } + } while(r > 0); - printf("... done reading from socket. Last read return=%d errno=%d\r\n", r, errno); - if(r != 0) - failures++; - else - successes++; - close(s); - printf("successes = %d failures = %d\r\n", successes, failures); - for(int countdown = 10; countdown >= 0; countdown--) { - printf("%d... ", countdown); - vTaskDelay(1000 / portTICK_RATE_MS); - } - printf("\r\nStarting again!\r\n"); + printf("... done reading from socket. Last read return=%d errno=%d\r\n", r, errno); + if(r != 0) + failures++; + else + successes++; + close(s); + printf("successes = %d failures = %d\r\n", successes, failures); + for(int countdown = 10; countdown >= 0; countdown--) { + printf("%d... ", countdown); + vTaskDelay(1000 / portTICK_RATE_MS); + } + printf("\r\nStarting again!\r\n"); } } @@ -118,8 +118,8 @@ void user_init(void) printf("SDK version:%s\n", sdk_system_get_sdk_version()); struct sdk_station_config config = { - .ssid = WIFI_SSID, - .password = WIFI_PASS, + .ssid = WIFI_SSID, + .password = WIFI_PASS, }; /* required to call wifi_set_opmode before station_set_config */ diff --git a/examples/http_get_ssl/main.c b/examples/http_get_ssl/main.c index 6d06fba..aaac5b5 100644 --- a/examples/http_get_ssl/main.c +++ b/examples/http_get_ssl/main.c @@ -43,70 +43,70 @@ void http_get_task(void *pvParameters) if ((ssl_ctx = ssl_ctx_new(options, SSL_DEFAULT_CLNT_SESS)) == NULL) { printf("Error: SSL Client context is invalid\n"); - while(1) {} + while(1) {} } printf("Got SSL context."); while(1) { - const struct addrinfo hints = { - .ai_family = AF_INET, - .ai_socktype = SOCK_STREAM, - }; - struct addrinfo *res; + const struct addrinfo hints = { + .ai_family = AF_INET, + .ai_socktype = SOCK_STREAM, + }; + struct addrinfo *res; - printf("top of loop, free heap = %u\r\n", xPortGetFreeHeapSize()); + printf("top of loop, free heap = %u\r\n", xPortGetFreeHeapSize()); - printf("Running DNS lookup for %s...\r\n", WEB_SERVER); - int err = getaddrinfo(WEB_SERVER, WEB_PORT, &hints, &res); + printf("Running DNS lookup for %s...\r\n", WEB_SERVER); + int err = getaddrinfo(WEB_SERVER, WEB_PORT, &hints, &res); - if(err != 0 || res == NULL) { - printf("DNS lookup failed err=%d res=%p\r\n", err, res); - if(res) - freeaddrinfo(res); - vTaskDelay(1000 / portTICK_RATE_MS); - failures++; - continue; - } - /* Note: inet_ntoa is non-reentrant, look at ipaddr_ntoa_r for "real" code */ - struct in_addr *addr = &((struct sockaddr_in *)res->ai_addr)->sin_addr; - printf("DNS lookup succeeded. IP=%s\r\n", inet_ntoa(*addr)); + if(err != 0 || res == NULL) { + printf("DNS lookup failed err=%d res=%p\r\n", err, res); + if(res) + freeaddrinfo(res); + vTaskDelay(1000 / portTICK_RATE_MS); + failures++; + continue; + } + /* Note: inet_ntoa is non-reentrant, look at ipaddr_ntoa_r for "real" code */ + struct in_addr *addr = &((struct sockaddr_in *)res->ai_addr)->sin_addr; + printf("DNS lookup succeeded. IP=%s\r\n", inet_ntoa(*addr)); - int s = socket(res->ai_family, res->ai_socktype, 0); - if(s < 0) { - printf("... Failed to allocate socket.\r\n"); - freeaddrinfo(res); - vTaskDelay(1000 / portTICK_RATE_MS); - failures++; - continue; - } + int s = socket(res->ai_family, res->ai_socktype, 0); + if(s < 0) { + printf("... Failed to allocate socket.\r\n"); + freeaddrinfo(res); + vTaskDelay(1000 / portTICK_RATE_MS); + failures++; + continue; + } printf("... allocated socket\r\n"); if(connect(s, res->ai_addr, res->ai_addrlen) != 0) { close(s); - freeaddrinfo(res); + freeaddrinfo(res); printf("... socket connect failed.\r\n"); vTaskDelay(4000 / portTICK_RATE_MS); - failures++; + failures++; continue; } printf("... connected. starting TLS session...\r\n"); - freeaddrinfo(res); + freeaddrinfo(res); - SSL *ssl = ssl_client_new(ssl_ctx, s, NULL, 0); - printf("initial status %p %d\r\n", ssl, ssl_handshake_status(ssl)); - if((err = ssl_handshake_status(ssl)) != SSL_OK) { - ssl_free(ssl); - close(s); - printf("SSL handshake failed. :( %d\r\n", err); - vTaskDelay(4000 / portTICK_RATE_MS); - failures++; - continue; - } + SSL *ssl = ssl_client_new(ssl_ctx, s, NULL, 0); + printf("initial status %p %d\r\n", ssl, ssl_handshake_status(ssl)); + if((err = ssl_handshake_status(ssl)) != SSL_OK) { + ssl_free(ssl); + close(s); + printf("SSL handshake failed. :( %d\r\n", err); + vTaskDelay(4000 / portTICK_RATE_MS); + failures++; + continue; + } const char *common_name = ssl_get_cert_dn(ssl, - SSL_X509_CERT_COMMON_NAME); + SSL_X509_CERT_COMMON_NAME); if (common_name) { printf("Common Name:\t\t\t%s\n", common_name); @@ -115,41 +115,41 @@ void http_get_task(void *pvParameters) display_session_id(ssl); display_cipher(ssl); - const char *req = - "GET "WEB_URL"\r\n" - "User-Agent: esp-open-rtos/0.1 esp8266\r\n" - "\r\n"; + const char *req = + "GET "WEB_URL"\r\n" + "User-Agent: esp-open-rtos/0.1 esp8266\r\n" + "\r\n"; if (ssl_write(ssl, (uint8_t *)req, strlen(req) + 1) < 0) { printf("... socket send failed\r\n"); - ssl_free(ssl); - close(s); - vTaskDelay(4000 / portTICK_RATE_MS); - failures++; - continue; + ssl_free(ssl); + close(s); + vTaskDelay(4000 / portTICK_RATE_MS); + failures++; + continue; } printf("... socket send success\r\n"); - uint8_t *recv_buf; - int r; - do { - r = ssl_read(ssl, &recv_buf); - for(int i = 0; i < r; i++) - printf("%c", recv_buf[i]); - } while(r > 0); + uint8_t *recv_buf; + int r; + do { + r = ssl_read(ssl, &recv_buf); + for(int i = 0; i < r; i++) + printf("%c", recv_buf[i]); + } while(r > 0); - printf("... done reading from socket. Last read return=%d errno=%d\r\n", r, errno); - if(r != 0) - failures++; - else - successes++; - ssl_free(ssl); - close(s); - printf("successes = %d failures = %d\r\n", successes, failures); - for(int countdown = 10; countdown >= 0; countdown--) { - printf("%d... ", countdown); - vTaskDelay(1000 / portTICK_RATE_MS); - } - printf("\r\nStarting again!\r\n"); + printf("... done reading from socket. Last read return=%d errno=%d\r\n", r, errno); + if(r != 0) + failures++; + else + successes++; + ssl_free(ssl); + close(s); + printf("successes = %d failures = %d\r\n", successes, failures); + for(int countdown = 10; countdown >= 0; countdown--) { + printf("%d... ", countdown); + vTaskDelay(1000 / portTICK_RATE_MS); + } + printf("\r\nStarting again!\r\n"); } } @@ -159,8 +159,8 @@ void user_init(void) printf("SDK version:%s\n", sdk_system_get_sdk_version()); struct sdk_station_config config = { - .ssid = WIFI_SSID, - .password = WIFI_PASS, + .ssid = WIFI_SSID, + .password = WIFI_PASS, }; /* required to call wifi_set_opmode before station_set_config */ @@ -192,34 +192,33 @@ static void display_session_id(SSL *ssl) } /** - * Display what cipher we are using + * Display what cipher we are using */ static void display_cipher(SSL *ssl) { printf("CIPHER is "); switch (ssl_get_cipher_id(ssl)) { - case SSL_AES128_SHA: - printf("AES128-SHA"); - break; + case SSL_AES128_SHA: + printf("AES128-SHA"); + break; - case SSL_AES256_SHA: - printf("AES256-SHA"); - break; + case SSL_AES256_SHA: + printf("AES256-SHA"); + break; - case SSL_RC4_128_SHA: - printf("RC4-SHA"); - break; + case SSL_RC4_128_SHA: + printf("RC4-SHA"); + break; - case SSL_RC4_128_MD5: - printf("RC4-MD5"); - break; + case SSL_RC4_128_MD5: + printf("RC4-MD5"); + break; - default: - printf("Unknown - %d", ssl_get_cipher_id(ssl)); - break; + default: + printf("Unknown - %d", ssl_get_cipher_id(ssl)); + break; } printf("\n"); } - diff --git a/examples/simple/main.c b/examples/simple/main.c index 40d6620..3d1ec80 100644 --- a/examples/simple/main.c +++ b/examples/simple/main.c @@ -12,9 +12,9 @@ void task1(void *pvParameters) printf("Hello from task1!\r\n"); uint32_t count = 0; while(1) { - vTaskDelay(100); - xQueueSend(*queue, &count, 0); - count++; + vTaskDelay(100); + xQueueSend(*queue, &count, 0); + count++; } } @@ -23,12 +23,12 @@ void task2(void *pvParameters) printf("Hello from task 2!\r\n"); xQueueHandle *queue = (xQueueHandle *)pvParameters; while(1) { - uint32_t count; - if(xQueueReceive(*queue, &count, 1000)) { - printf("Got %d\n", count); - } else { - printf("No msg :(\n"); - } + uint32_t count; + if(xQueueReceive(*queue, &count, 1000)) { + printf("Got %d\n", count); + } else { + printf("No msg :(\n"); + } } } @@ -42,5 +42,3 @@ void user_init(void) xTaskCreate(task1, (signed char *)"tsk1", 256, &mainqueue, 2, NULL); xTaskCreate(task2, (signed char *)"tsk2", 256, &mainqueue, 2, NULL); } - -