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)
This commit is contained in:
parent
a59b1565e4
commit
c09167715e
10 changed files with 234 additions and 226 deletions
|
@ -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)
|
||||
)
|
||||
)
|
||||
|
|
|
@ -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/).
|
||||
|
|
|
@ -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]();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<<INUM_GPIO);
|
||||
_xt_isr_attach(INUM_GPIO, gpio_interrupt_handler);
|
||||
_xt_isr_unmask(1<<INUM_GPIO);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* Part of esp-open-rtos
|
||||
* Copyright (C) 2015 Superhouse Automation Pty Ltd
|
||||
* BSD Licensed as described in the file LICENSE
|
||||
*/
|
||||
*/
|
||||
|
||||
/* Mapping from register index to GPIO and from GPIO index to register
|
||||
number. DO NOT USE THESE IN YOUR CODE, call gpio_to_iomux(xxx) or
|
||||
|
@ -26,22 +26,21 @@ extern const IROM uint32_t IOMUX_TO_GPIO_MAP[];
|
|||
INLINED uint8_t gpio_to_iomux(const uint8_t gpio_number)
|
||||
{
|
||||
if(__builtin_constant_p(gpio_number)) {
|
||||
static const uint8_t _regs[] = _GPIO_TO_IOMUX;
|
||||
return _regs[gpio_number];
|
||||
static const uint8_t _regs[] = _GPIO_TO_IOMUX;
|
||||
return _regs[gpio_number];
|
||||
} else {
|
||||
return GPIO_TO_IOMUX_MAP[gpio_number];
|
||||
return GPIO_TO_IOMUX_MAP[gpio_number];
|
||||
}
|
||||
}
|
||||
|
||||
INLINED uint8_t iomux_to_gpio(const uint8_t iomux_number)
|
||||
{
|
||||
if(__builtin_constant_p(iomux_number)) {
|
||||
static const uint8_t _regs[] = _IOMUX_TO_GPIO;
|
||||
return _regs[iomux_number];
|
||||
static const uint8_t _regs[] = _IOMUX_TO_GPIO;
|
||||
return _regs[iomux_number];
|
||||
} else {
|
||||
return IOMUX_TO_GPIO_MAP[iomux_number];
|
||||
return IOMUX_TO_GPIO_MAP[iomux_number];
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -20,10 +20,10 @@ void blinkenTask(void *pvParameters)
|
|||
{
|
||||
gpio_enable(gpio, GPIO_OUTPUT);
|
||||
while(1) {
|
||||
gpio_write(gpio, 1);
|
||||
vTaskDelay(1000 / portTICK_RATE_MS);
|
||||
gpio_write(gpio, 0);
|
||||
vTaskDelay(1000 / portTICK_RATE_MS);
|
||||
gpio_write(gpio, 1);
|
||||
vTaskDelay(1000 / portTICK_RATE_MS);
|
||||
gpio_write(gpio, 0);
|
||||
vTaskDelay(1000 / portTICK_RATE_MS);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -44,10 +44,10 @@ void blinkenRegisterTask(void *pvParameters)
|
|||
GPIO_DIR_SET = BIT(gpio);
|
||||
IOMUX_SET(GP14,GPIO,IOMUX_OE); /* change this line if you change 'gpio' */
|
||||
while(1) {
|
||||
GPIO_OUT_SET = BIT(gpio);
|
||||
vTaskDelay(1000 / portTICK_RATE_MS);
|
||||
GPIO_OUT_CLEAR = BIT(gpio);
|
||||
vTaskDelay(1000 / portTICK_RATE_MS);
|
||||
GPIO_OUT_SET = BIT(gpio);
|
||||
vTaskDelay(1000 / portTICK_RATE_MS);
|
||||
GPIO_OUT_CLEAR = BIT(gpio);
|
||||
vTaskDelay(1000 / portTICK_RATE_MS);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -30,12 +30,12 @@ void buttonPollTask(void *pvParameters)
|
|||
{
|
||||
printf("Polling for button press on gpio %d...\r\n", gpio);
|
||||
while(1) {
|
||||
while(gpio_read(gpio) != active)
|
||||
{
|
||||
taskYIELD();
|
||||
}
|
||||
printf("Polled for button press at %dms\r\n", xTaskGetTickCount()*portTICK_RATE_MS);
|
||||
vTaskDelay(200 / portTICK_RATE_MS);
|
||||
while(gpio_read(gpio) != active)
|
||||
{
|
||||
taskYIELD();
|
||||
}
|
||||
printf("Polled for button press at %dms\r\n", xTaskGetTickCount()*portTICK_RATE_MS);
|
||||
vTaskDelay(200 / portTICK_RATE_MS);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -55,13 +55,13 @@ void buttonIntTask(void *pvParameters)
|
|||
|
||||
uint32_t last = 0;
|
||||
while(1) {
|
||||
uint32_t button_ts;
|
||||
xQueueReceive(*tsqueue, &button_ts, portMAX_DELAY);
|
||||
button_ts *= portTICK_RATE_MS;
|
||||
if(last < button_ts-200) {
|
||||
printf("Button interrupt fired at %dms\r\n", button_ts);
|
||||
last = button_ts;
|
||||
}
|
||||
uint32_t button_ts;
|
||||
xQueueReceive(*tsqueue, &button_ts, portMAX_DELAY);
|
||||
button_ts *= portTICK_RATE_MS;
|
||||
if(last < button_ts-200) {
|
||||
printf("Button interrupt fired at %dms\r\n", button_ts);
|
||||
last = button_ts;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -30,85 +30,85 @@ void http_get_task(void *pvParameters)
|
|||
printf("HTTP get task starting...\r\n");
|
||||
|
||||
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("Running DNS lookup for %s...\r\n", WEB_SERVER);
|
||||
int err = getaddrinfo(WEB_SERVER, "80", &hints, &res);
|
||||
printf("Running DNS lookup for %s...\r\n", WEB_SERVER);
|
||||
int err = getaddrinfo(WEB_SERVER, "80", &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\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 */
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue