add support for wifi-link-12 with swapped uart pins

Conflicts:
	serial/serbridge.c
pull/36/merge
Thorsten von Eicken 9 years ago
parent 5714add24d
commit b31c0a557c
  1. 13
      serial/serbridge.c
  2. 20
      user/cgipins.c

@ -322,7 +322,18 @@ serbridgeUartCb(char *buf, int length) {
void ICACHE_FLASH_ATTR serbridgeInitPins() { void ICACHE_FLASH_ATTR serbridgeInitPins() {
mcu_reset_pin = flashConfig.reset_pin; mcu_reset_pin = flashConfig.reset_pin;
mcu_isp_pin = flashConfig.isp_pin; mcu_isp_pin = flashConfig.isp_pin;
os_printf("Serbridge pins: reset=%d isp=%d\n", mcu_reset_pin, mcu_isp_pin); os_printf("Serbridge pins: reset=%d isp=%d swap=%d\n",
mcu_reset_pin, mcu_isp_pin, flashConfig.swap_uart);
if (flashConfig.swap_uart) {
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, 4);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, 4);
system_uart_swap();
} else {
PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, 0);
PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0RXD_U, 0);
system_uart_de_swap();
}
// set both pins to 1 before turning them on so we don't cause a reset // set both pins to 1 before turning them on so we don't cause a reset
if (mcu_isp_pin >= 0) GPIO_OUTPUT_SET(mcu_isp_pin, 1); if (mcu_isp_pin >= 0) GPIO_OUTPUT_SET(mcu_isp_pin, 1);

@ -23,15 +23,13 @@ static const int num_map_func = sizeof(map_func)/sizeof(char*);
// Cgi to return choice of pin assignments // Cgi to return choice of pin assignments
int ICACHE_FLASH_ATTR cgiPinsGet(HttpdConnData *connData) { int ICACHE_FLASH_ATTR cgiPinsGet(HttpdConnData *connData) {
char buff[1024]; if (connData->conn==NULL) return HTTPD_CGI_DONE; // Connection aborted
int len;
if (connData->conn==NULL) { char buff[2048];
return HTTPD_CGI_DONE; // Connection aborted int len;
}
// figure out current mapping // figure out current mapping
int curr = 99; int curr = 0;
for (int i=0; i<num_map_names; i++) { for (int i=0; i<num_map_names; i++) {
int8_t *map = map_asn[i]; int8_t *map = map_asn[i];
if (map[0] == flashConfig.reset_pin && map[1] == flashConfig.isp_pin && if (map[0] == flashConfig.reset_pin && map[1] == flashConfig.isp_pin &&
@ -40,6 +38,7 @@ int ICACHE_FLASH_ATTR cgiPinsGet(HttpdConnData *connData) {
} }
} }
// print mapping
len = os_sprintf(buff, "{ \"curr\":\"%s\", \"map\": [ ", map_names[curr]); len = os_sprintf(buff, "{ \"curr\":\"%s\", \"map\": [ ", map_names[curr]);
for (int i=0; i<num_map_names; i++) { for (int i=0; i<num_map_names; i++) {
if (i != 0) buff[len++] = ','; if (i != 0) buff[len++] = ',';
@ -50,8 +49,12 @@ int ICACHE_FLASH_ATTR cgiPinsGet(HttpdConnData *connData) {
len += os_sprintf(buff+len, ", \"descr\":\""); len += os_sprintf(buff+len, ", \"descr\":\"");
for (int f=0; f<num_map_func; f++) { for (int f=0; f<num_map_func; f++) {
int8_t p = map_asn[i][f]; int8_t p = map_asn[i][f];
if (p >= 0) len += os_sprintf(buff+len, " %s:gpio%d", map_func[f], p); if (f == 4)
else len += os_sprintf(buff+len, " %s:n/a", map_func[f]); len += os_sprintf(buff+len, " %s:%s", map_func[f], p?"yes":"no");
else if (p >= 0)
len += os_sprintf(buff+len, " %s:gpio%d", map_func[f], p);
else
len += os_sprintf(buff+len, " %s:n/a", map_func[f]);
} }
len += os_sprintf(buff+len, "\" }"); len += os_sprintf(buff+len, "\" }");
} }
@ -87,6 +90,7 @@ int ICACHE_FLASH_ATTR cgiPinsSet(HttpdConnData *connData) {
flashConfig.isp_pin = map[1]; flashConfig.isp_pin = map[1];
flashConfig.conn_led_pin = map[2]; flashConfig.conn_led_pin = map[2];
flashConfig.ser_led_pin = map[3]; flashConfig.ser_led_pin = map[3];
flashConfig.swap_uart = map[4];
serbridgeInitPins(); serbridgeInitPins();
serledInit(); serledInit();

Loading…
Cancel
Save