From b1eb1c458fdb3ab775fbd9412776178375296fa7 Mon Sep 17 00:00:00 2001 From: Jan Krupa Date: Sat, 1 Jun 2024 18:29:15 +0200 Subject: [PATCH] [coco] replace fnUartBUS with fnDwCom --- fujinet_pc.cmake | 4 +- lib/bus/bus.h | 17 +++++ lib/bus/drivewire/drivewire.cpp | 104 +++++++++++++++---------------- lib/bus/drivewire/drivewire.h | 4 +- lib/device/drivewire/cpm.cpp | 16 ++--- lib/device/drivewire/dload.cpp | 48 +++++++------- lib/device/drivewire/fuji.cpp | 96 ++++++++++++++-------------- lib/device/drivewire/modem.cpp | 8 +-- lib/device/drivewire/network.cpp | 38 +++++------ lib/hardware/fnUART.cpp | 23 +++---- lib/hardware/fnUART.h | 20 ++++-- lib/hardware/fnUARTUnix.cpp | 4 +- 12 files changed, 200 insertions(+), 182 deletions(-) diff --git a/fujinet_pc.cmake b/fujinet_pc.cmake index c14c3aee3..0bcab2b3b 100644 --- a/fujinet_pc.cmake +++ b/fujinet_pc.cmake @@ -160,7 +160,7 @@ set(SOURCES src/main.cpp lib/utils/U8Char.h lib/utils/U8Char.cpp lib/hardware/fnWiFi.h lib/hardware/fnDummyWiFi.h lib/hardware/fnDummyWiFi.cpp lib/hardware/led.h lib/hardware/led.cpp - lib/hardware/fnUART.h lib/hardware/fnUART.cpp + lib/hardware/fnUART.h lib/hardware/fnUART.cpp lib/hardware/fnUARTUnix.cpp lib/hardware/fnUARTWindows.cpp lib/hardware/fnSystem.h lib/hardware/fnSystem.cpp lib/hardware/fnSystemNet.cpp lib/FileSystem/fnDirCache.h lib/FileSystem/fnDirCache.cpp @@ -344,8 +344,6 @@ if(FUJINET_TARGET STREQUAL "COCO") lib/bus/drivewire/dwcom/dwport.h lib/bus/drivewire/dwcom/dwport.cpp lib/bus/drivewire/dwcom/dwserial.h lib/bus/drivewire/dwcom/dwserial.cpp lib/bus/drivewire/dwcom/dwbecker.h lib/bus/drivewire/dwcom/dwbecker.cpp - lib/hardware/fnUART.h lib/hardware/fnUARTUnix.cpp - lib/hardware/fnUART.h lib/hardware/fnUARTWindows.cpp lib/media/drivewire/mediaTypeDSK.h lib/media/drivewire/mediaTypeDSK.cpp diff --git a/lib/bus/bus.h b/lib/bus/bus.h index b81a042cf..9d7157342 100644 --- a/lib/bus/bus.h +++ b/lib/bus/bus.h @@ -4,6 +4,11 @@ #ifdef BUILD_ATARI #include "sio/sio.h" #define SYSTEM_BUS SIO +#ifdef ESP_PLATFORM + #define FN_BUS_PORT fnUartBUS +#else + #define FN_BUS_PORT fnSioCom +#endif #endif #ifdef BUILD_IEC @@ -11,61 +16,73 @@ #include "iec/parallel.h" #include "iec/ieee-488.h" #define SYSTEM_BUS IEC +#define FN_BUS_PORT fnUartBUS // TBD #endif #ifdef BUILD_ADAM #include "adamnet/adamnet.h" #define SYSTEM_BUS AdamNet +#define FN_BUS_PORT fnUartBUS #endif #ifdef BUILD_LYNX #include "comlynx/comlynx.h" #define SYSTEM_BUS ComLynx +#define FN_BUS_PORT fnUartBUS #endif #ifdef NEW_TARGET #include "new/adamnet.h" #define SYSTEM_BUS AdamNet +#define FN_BUS_PORT fnUartBUS #endif #ifdef BUILD_APPLE #include "iwm/iwm.h" #define SYSTEM_BUS IWM +#define FN_BUS_PORT fnUartBUS // TBD #endif #ifdef BUILD_MAC #include "mac/mac.h" #define SYSTEM_BUS MAC +#define FN_BUS_PORT fnUartBUS #endif #ifdef BUILD_S100 #include "s100spi/s100spi.h" #define SYSTEM_BUS s100Bus +#define FN_BUS_PORT fnUartBUS // TBD #endif #ifdef BUILD_RS232 #include "rs232/rs232.h" #define SYSTEM_BUS RS232 +#define FN_BUS_PORT fnUartBUS #endif #ifdef BUILD_CX16 #include "cx16_i2c/cx16_i2c.h" #define SYSTEM_BUS CX16 +#define FN_BUS_PORT fnUartBUS // TBD #endif #ifdef BUILD_RC2014 #include "rc2014bus/rc2014bus.h" #define SYSTEM_BUS rc2014Bus +#define FN_BUS_PORT fnUartBUS #endif #ifdef BUILD_H89 #include "h89/h89.h" #define SYSTEM_BUS H89Bus +#define FN_BUS_PORT fnUartBUS // TBD #endif #ifdef BUILD_COCO #include "drivewire/drivewire.h" #define SYSTEM_BUS DRIVEWIRE +#define FN_BUS_PORT fnDwCom #endif #endif // BUS_H diff --git a/lib/bus/drivewire/drivewire.cpp b/lib/bus/drivewire/drivewire.cpp index b77522c94..0f4cc4a7d 100755 --- a/lib/bus/drivewire/drivewire.cpp +++ b/lib/bus/drivewire/drivewire.cpp @@ -105,11 +105,11 @@ void systemBus::op_readex() drivewireDisk *d = nullptr; uint16_t c1 = 0, c2 = 0; - drive_num = fnUartBUS.read(); + drive_num = fnDwCom.read(); - lsn = fnUartBUS.read() << 16; - lsn |= fnUartBUS.read() << 8; - lsn |= fnUartBUS.read(); + lsn = fnDwCom.read() << 16; + lsn |= fnDwCom.read() << 8; + lsn |= fnDwCom.read(); Debug_printf("OP_READ: DRIVE %3u - SECTOR %8lu\n", drive_num, lsn); @@ -121,9 +121,9 @@ void systemBus::op_readex() if (!d) { Debug_printv("Invalid drive #%3u", drive_num); - fnUartBUS.write(0xF6); - fnUartBUS.flush(); - fnUartBUS.flush_input(); + fnDwCom.write(0xF6); + fnDwCom.flush(); + fnDwCom.flush_input(); return; } @@ -131,32 +131,32 @@ void systemBus::op_readex() if (!d->device_active) { Debug_printv("Device not active."); - fnUartBUS.write(0xF6); - fnUartBUS.flush(); - fnUartBUS.flush_input(); + fnDwCom.write(0xF6); + fnDwCom.flush(); + fnDwCom.flush_input(); return; } if (d->read(lsn, sector_data)) { Debug_printf("Read error\n"); - fnUartBUS.write(0xF4); - fnUartBUS.flush(); - fnUartBUS.flush_input(); + fnDwCom.write(0xF4); + fnDwCom.flush(); + fnDwCom.flush_input(); return; } - fnUartBUS.write(sector_data, MEDIA_BLOCK_SIZE); + fnDwCom.write(sector_data, MEDIA_BLOCK_SIZE); - c1 = (fnUartBUS.read()) << 8; - c1 |= fnUartBUS.read(); + c1 = (fnDwCom.read()) << 8; + c1 |= fnDwCom.read(); c2 = drivewire_checksum(sector_data, MEDIA_BLOCK_SIZE); if (c1 != c2) - fnUartBUS.write(243); + fnDwCom.write(243); else - fnUartBUS.write(0x00); + fnDwCom.write(0x00); } void systemBus::op_write() @@ -164,31 +164,31 @@ void systemBus::op_write() drivewireDisk *d = nullptr; uint16_t c1 = 0, c2 = 0; - drive_num = fnUartBUS.read(); + drive_num = fnDwCom.read(); - lsn = fnUartBUS.read() << 16; - lsn |= fnUartBUS.read() << 8; - lsn |= fnUartBUS.read(); + lsn = fnDwCom.read() << 16; + lsn |= fnDwCom.read() << 8; + lsn |= fnDwCom.read(); - size_t s = fnUartBUS.readBytes(sector_data, MEDIA_BLOCK_SIZE); + size_t s = fnDwCom.readBytes(sector_data, MEDIA_BLOCK_SIZE); if (s != MEDIA_BLOCK_SIZE) { Debug_printv("Insufficient # of bytes for write, total recvd: %u", s); - fnUartBUS.flush_input(); + fnDwCom.flush_input(); return; } // Todo handle checksum. - c1 = fnUartBUS.read(); - c1 |= fnUartBUS.read() << 8; + c1 = fnDwCom.read(); + c1 |= fnDwCom.read() << 8; c2 = drivewire_checksum(sector_data, MEDIA_BLOCK_SIZE); // if (c1 != c2) // { // Debug_printf("Checksum error\n"); - // fnUartBUS.write(243); + // fnDwCom.write(243); // return; // } @@ -199,25 +199,25 @@ void systemBus::op_write() if (!d) { Debug_printv("Invalid drive #%3u", drive_num); - fnUartBUS.write(0xF6); + fnDwCom.write(0xF6); return; } if (!d->device_active) { Debug_printv("Device not active."); - fnUartBUS.write(0xF6); + fnDwCom.write(0xF6); return; } if (d->write(lsn, sector_data)) { Debug_print("Write error\n"); - fnUartBUS.write(0xF5); + fnDwCom.write(0xF5); return; } - fnUartBUS.write(0x00); // success + fnDwCom.write(0x00); // success } void systemBus::op_fuji() @@ -235,7 +235,7 @@ void systemBus::op_cpm() void systemBus::op_net() { // Get device ID - uint8_t device_id = (uint8_t)fnUartBUS.read(); + uint8_t device_id = (uint8_t)fnDwCom.read(); // If device doesn't exist, create it. if (!_netDev.contains(device_id)) @@ -253,10 +253,10 @@ void systemBus::op_unhandled(uint8_t c) { Debug_printv("Unhandled opcode: %02x", c); - while (fnUartBUS.available()) - Debug_printf("%02x ", fnUartBUS.read()); + while (fnDwCom.available()) + Debug_printf("%02x ", fnDwCom.read()); - fnUartBUS.flush_input(); + fnDwCom.flush_input(); } void systemBus::op_time() @@ -268,12 +268,12 @@ void systemBus::op_time() Debug_printf("Returning %02d/%02d/%02d %02d:%02d:%02d\n", now->tm_year, now->tm_mon, now->tm_mday, now->tm_hour, now->tm_min, now->tm_sec); - fnUartBUS.write(now->tm_year - 1900); - fnUartBUS.write(now->tm_mon); - fnUartBUS.write(now->tm_mday); - fnUartBUS.write(now->tm_hour); - fnUartBUS.write(now->tm_min); - fnUartBUS.write(now->tm_sec); + fnDwCom.write(now->tm_year - 1900); + fnDwCom.write(now->tm_mon); + fnDwCom.write(now->tm_mday); + fnDwCom.write(now->tm_hour); + fnDwCom.write(now->tm_min); + fnDwCom.write(now->tm_sec); } void systemBus::op_init() @@ -284,35 +284,35 @@ void systemBus::op_init() void systemBus::op_dwinit() { Debug_printv("OP_DWINIT - Sending feature byte 0x%02x", DWINIT_FEATURES); - fnUartBUS.write(DWINIT_FEATURES); + fnDwCom.write(DWINIT_FEATURES); } void systemBus::op_getstat() { - Debug_printv("OP_GETSTAT: 0x%02x", fnUartBUS.read()); + Debug_printv("OP_GETSTAT: 0x%02x", fnDwCom.read()); } void systemBus::op_setstat() { - Debug_printv("OP_SETSTAT: 0x%02x", fnUartBUS.read()); + Debug_printv("OP_SETSTAT: 0x%02x", fnDwCom.read()); } void systemBus::op_serread() { // TODO: Temporary until modem and network are working - fnUartBUS.write(0x00); - fnUartBUS.write(0x00); + fnDwCom.write(0x00); + fnDwCom.write(0x00); } void systemBus::op_print() { - _printerdev->write(fnUartBUS.read()); + _printerdev->write(fnDwCom.read()); } // Read and process a command frame from DRIVEWIRE void systemBus::_drivewire_process_cmd() { - uint8_t c = fnUartBUS.read(); + uint8_t c = fnDwCom.read(); fnLedManager.set(eLed::LED_BUS, true); @@ -411,7 +411,7 @@ void systemBus::service() } } - if (fnUartBUS.available()) + if (fnDwCom.available()) _drivewire_process_cmd(); // dload.dload_process(); @@ -484,7 +484,7 @@ void systemBus::setup() #endif /* FORCE_UART_BAUD */ #else // Setup SIO ports: serial UART and NetSIO - fnUartBUS.set_port(Config.get_serial_port().c_str()); // UART + fnDwCom.set_serial_port(Config.get_serial_port().c_str()); // UART std::string baudString = Config.get_serial_port_baud(); if (baudString.empty()) { @@ -496,8 +496,8 @@ void systemBus::setup() } #endif - fnUartBUS.begin(_drivewireBaud); - fnUartBUS.flush_input(); + fnDwCom.begin(_drivewireBaud); + fnDwCom.flush_input(); Debug_printv("DRIVEWIRE MODE"); } diff --git a/lib/bus/drivewire/drivewire.h b/lib/bus/drivewire/drivewire.h index f954ddfd6..751078441 100644 --- a/lib/bus/drivewire/drivewire.h +++ b/lib/bus/drivewire/drivewire.h @@ -26,7 +26,9 @@ #include #include -#include +// fnUartBUS (Serial only) was replaced with fnDwCom (Serial|TCP/Becker) +//#include +#include "drivewire/dwcom/fnDwCom.h" #define DRIVEWIRE_BAUDRATE 57600 diff --git a/lib/device/drivewire/cpm.cpp b/lib/device/drivewire/cpm.cpp index 3292f2549..a40605d53 100755 --- a/lib/device/drivewire/cpm.cpp +++ b/lib/device/drivewire/cpm.cpp @@ -66,13 +66,13 @@ drivewireCPM::drivewireCPM() void drivewireCPM::ready() { - fnUartBUS.write(0x01); + fnDwCom.write(0x01); } void drivewireCPM::send_response() { // Send body - fnUartBUS.write((uint8_t *)response.c_str(),response.length()); + fnDwCom.write((uint8_t *)response.c_str(),response.length()); // Clear the response response.clear(); @@ -94,8 +94,8 @@ void drivewireCPM::boot() void drivewireCPM::read() { - uint8_t lenh = fnUartBUS.read(); - uint8_t lenl = fnUartBUS.read(); + uint8_t lenh = fnDwCom.read(); + uint8_t lenl = fnDwCom.read(); uint16_t len = (lenh * 256) + lenl; uint16_t mw = uxQueueMessagesWaiting(rxq); @@ -121,8 +121,8 @@ void drivewireCPM::read() void drivewireCPM::write() { - uint8_t lenh = fnUartBUS.read(); - uint8_t lenl = fnUartBUS.read(); + uint8_t lenh = fnDwCom.read(); + uint8_t lenl = fnDwCom.read(); uint16_t len = (lenh * 256) + lenl; if (!len) @@ -130,7 +130,7 @@ void drivewireCPM::write() for (uint16_t i=0;i 7) { @@ -1311,8 +1311,8 @@ void drivewireFuji::insert_boot_device(uint8_t d) void drivewireFuji::base64_encode_input() { - uint8_t lenh = fnUartBUS.read(); - uint8_t lenl = fnUartBUS.read(); + uint8_t lenh = fnDwCom.read(); + uint8_t lenl = fnDwCom.read(); uint16_t len = lenh << 8 | lenl; if (!len) @@ -1323,7 +1323,7 @@ void drivewireFuji::base64_encode_input() } std::vector p(len); - fnUartBUS.readBytes(p.data(), len); + fnDwCom.readBytes(p.data(), len); base64.base64_buffer += std::string((const char *)p.data(), len); errorCode = 1; } @@ -1368,8 +1368,8 @@ void drivewireFuji::base64_encode_length() void drivewireFuji::base64_encode_output() { - uint8_t lenl = fnUartBUS.read(); - uint8_t lenh = fnUartBUS.read(); + uint8_t lenl = fnDwCom.read(); + uint8_t lenh = fnDwCom.read(); uint16_t len = lenh << 8 | lenl; if (!len) @@ -1390,8 +1390,8 @@ void drivewireFuji::base64_encode_output() void drivewireFuji::base64_decode_input() { - uint8_t lenl = fnUartBUS.read(); - uint8_t lenh = fnUartBUS.read(); + uint8_t lenl = fnDwCom.read(); + uint8_t lenh = fnDwCom.read(); uint16_t len = lenh << 8 | lenl; if (!len) @@ -1402,7 +1402,7 @@ void drivewireFuji::base64_decode_input() } std::vector p(len); - fnUartBUS.readBytes(p.data(), len); + fnDwCom.readBytes(p.data(), len); base64.base64_buffer += std::string((const char *)p.data(), len); errorCode = 1; @@ -1460,8 +1460,8 @@ void drivewireFuji::base64_decode_output() { Debug_printf("FUJI: BASE64 DECODE OUTPUT\n"); - uint8_t lenl = fnUartBUS.read(); - uint8_t lenh = fnUartBUS.read(); + uint8_t lenl = fnDwCom.read(); + uint8_t lenh = fnDwCom.read(); uint16_t len = lenh << 8 | lenl; if (!len) @@ -1494,8 +1494,8 @@ void drivewireFuji::base64_decode_output() void drivewireFuji::hash_input() { - uint8_t lenl = fnUartBUS.read(); - uint8_t lenh = fnUartBUS.read(); + uint8_t lenl = fnDwCom.read(); + uint8_t lenh = fnDwCom.read(); uint16_t len = lenh << 8 | lenl; Debug_printf("FUJI: HASH INPUT\n"); @@ -1508,7 +1508,7 @@ void drivewireFuji::hash_input() } std::vector p(len); - fnUartBUS.readBytes(p.data(),len); + fnDwCom.readBytes(p.data(),len); base64.base64_buffer += std::string((const char *)p.data(), len); errorCode = 1; @@ -1516,7 +1516,7 @@ void drivewireFuji::hash_input() void drivewireFuji::hash_compute() { - uint8_t m = hash_mode = fnUartBUS.read(); + uint8_t m = hash_mode = fnDwCom.read(); Debug_printf("FUJI: HASH COMPUTE\n"); @@ -1530,7 +1530,7 @@ void drivewireFuji::hash_compute() void drivewireFuji::hash_length() { unsigned char r = 0; - uint8_t m = fnUartBUS.read(); + uint8_t m = fnDwCom.read(); switch (hash_mode) { @@ -1562,7 +1562,7 @@ void drivewireFuji::hash_length() void drivewireFuji::hash_output() { uint16_t olen = 0; - uint8_t m = fnUartBUS.read(); + uint8_t m = fnDwCom.read(); Debug_printf("FUJI: HASH OUTPUT\n"); @@ -1613,7 +1613,7 @@ std::string drivewireFuji::get_host_prefix(int host_slot) void drivewireFuji::send_error() { Debug_printf("drivewireFuji::send_error(%u)\n",errorCode); - fnUartBUS.write(errorCode); + fnDwCom.write(errorCode); } void drivewireFuji::random() @@ -1631,7 +1631,7 @@ void drivewireFuji::random() void drivewireFuji::send_response() { // Send body - fnUartBUS.write((uint8_t *)response.c_str(),response.length()); + fnDwCom.write((uint8_t *)response.c_str(),response.length()); // Clear the response response.clear(); @@ -1640,12 +1640,12 @@ void drivewireFuji::send_response() void drivewireFuji::ready() { - fnUartBUS.write(0x01); // Yes, ready. + fnDwCom.write(0x01); // Yes, ready. } void drivewireFuji::process() { - uint8_t c = fnUartBUS.read(); + uint8_t c = fnDwCom.read(); switch (c) { diff --git a/lib/device/drivewire/modem.cpp b/lib/device/drivewire/modem.cpp index 1fbb257e6..f977e5c6d 100644 --- a/lib/device/drivewire/modem.cpp +++ b/lib/device/drivewire/modem.cpp @@ -131,7 +131,7 @@ void drivewireModem::at_connect_resultCode(int modemBaud) break; } // drivewire_send_int(resultCode); - // fnUartBUS.write(ASCII_CR); + // fnDwCom.write(ASCII_CR); } /** @@ -463,7 +463,7 @@ void drivewireModem::at_handle_answer() CRX = true; cmdMode = false; - fnUartBUS.flush(); + fnDwCom.flush(); answerHack = false; } } @@ -1004,11 +1004,11 @@ void drivewireModem::modemCommand() // // In command mode - don't exchange with TCP but gather characters to a string // //if (SIO_UART.available() /*|| blockWritePending == true */ ) -// if (fnUartBUS.available() > 0) +// if (fnDwCom.available() > 0) // { // // get char from Atari SIO // //char chr = SIO_UART.read(); -// char chr = fnUartBUS.read(); +// char chr = fnDwCom.read(); // // Return, enter, new line, carriage return.. anything goes to end the command // if ((chr == ASCII_LF) || (chr == ASCII_CR)) diff --git a/lib/device/drivewire/network.cpp b/lib/device/drivewire/network.cpp index c15b4e5bc..a055d38f7 100755 --- a/lib/device/drivewire/network.cpp +++ b/lib/device/drivewire/network.cpp @@ -117,7 +117,7 @@ void drivewireNetwork::timer_stop() void drivewireNetwork::ready() { - fnUartBUS.write(0x01); // yes, ready. + fnDwCom.write(0x01); // yes, ready. } /** @@ -132,7 +132,7 @@ void drivewireNetwork::open() char tmp[256]; memset(tmp,0,sizeof(tmp)); - size_t bytes_read = fnUartBUS.readBytes(tmp,256); + size_t bytes_read = fnDwCom.readBytes((uint8_t *)tmp, 256); Debug_printf("tmp = %s\n",tmp); @@ -183,7 +183,7 @@ void drivewireNetwork::open() delete protocolParser; protocolParser = nullptr; } - //fnUartBUS.write(ns.error); + //fnDwCom.write(ns.error); return; } @@ -202,7 +202,7 @@ void drivewireNetwork::open() delete protocolParser; protocolParser = nullptr; } - //fnUartBUS.write(ns.error); + //fnDwCom.write(ns.error); return; } @@ -220,7 +220,7 @@ void drivewireNetwork::open() // And signal complete! ns.error = 1; - //fnUartBUS.write(ns.error); + //fnDwCom.write(ns.error); Debug_printf("ns.error = %u\n",ns.error); } @@ -243,7 +243,7 @@ void drivewireNetwork::close() // If no protocol enabled, we just signal complete, and return. if (protocol == nullptr) { - //fnUartBUS.write(ns.error); + //fnDwCom.write(ns.error); return; } @@ -267,7 +267,7 @@ void drivewireNetwork::close() Debug_printv("After protocol delete %lu\n",esp_get_free_internal_heap_size()); #endif - //fnUartBUS.write(ns.error); + //fnDwCom.write(ns.error); } /** @@ -381,7 +381,7 @@ void drivewireNetwork::write() return; } - if (fnUartBUS.readBytes(txbuf,num_bytes) < num_bytes) + if (fnDwCom.readBytes((uint8_t *)txbuf, num_bytes) < num_bytes) { Debug_printf("drivewireNetwork::write() - short read\n"); free(txbuf); @@ -569,7 +569,7 @@ void drivewireNetwork::set_prefix() std::string prefixSpec_str; char tmp[256]; memset(tmp,0,sizeof(tmp)); - size_t read_bytes = fnUartBUS.readBytes(tmp,256); + size_t read_bytes = fnDwCom.readBytes((uint8_t *)tmp, 256); if (read_bytes != 256) { @@ -674,7 +674,7 @@ void drivewireNetwork::set_login() char tmp[256]; memset(tmp,0,sizeof(tmp)); - size_t bytes_read = fnUartBUS.readBytes(tmp,256); + size_t bytes_read = fnDwCom.readBytes((uint8_t *)tmp, 256); if (bytes_read != 256) { @@ -695,7 +695,7 @@ void drivewireNetwork::set_password() char tmp[256]; memset(tmp,0,sizeof(tmp)); - size_t bytes_read = fnUartBUS.readBytes(tmp,256); + size_t bytes_read = fnDwCom.readBytes((uint8_t *)tmp, 256); if (bytes_read != 256) { @@ -747,7 +747,7 @@ void drivewireNetwork::special_inquiry() do_inquiry(cmdFrame.aux1); // Finally, return the completed inq_dstats value back to CoCo - fnUartBUS.write(&inq_dstats, sizeof(inq_dstats)); + fnDwCom.write(&inq_dstats, sizeof(inq_dstats)); } void drivewireNetwork::do_inquiry(unsigned char inq_cmd) @@ -897,7 +897,7 @@ void drivewireNetwork::special_80() // Get special (devicespec) from computer - fnUartBUS.readBytes(spData,256); + fnDwCom.readBytes(spData,256); Debug_printf("drivewireNetwork::special_80() - %s\n", spData); @@ -1048,13 +1048,13 @@ else void drivewireNetwork::send_error() { Debug_printf("drivewireNetwork::send_error(%u)\n",ns.error); - fnUartBUS.write(ns.error); + fnDwCom.write(ns.error); } void drivewireNetwork::send_response() { // Send body - fnUartBUS.write((uint8_t *)response.c_str(),response.length()); + fnDwCom.write((uint8_t *)response.c_str(),response.length()); Debug_printf("drivewireNetwork::send_response(%s)",response.c_str()); @@ -1227,7 +1227,7 @@ void drivewireNetwork::json_query() char tmpq[256]; memset(tmpq,0,sizeof(tmpq)); - size_t bytes_read = fnUartBUS.readBytes(tmpq,256); + size_t bytes_read = fnDwCom.readBytes((uint8_t *)tmpq,256); // why does it need to be 256 bytes? if (bytes_read != 256) @@ -1295,9 +1295,9 @@ void drivewireNetwork::do_idempotent_command_80() void drivewireNetwork::process() { // Read the three command and aux bytes - cmdFrame.comnd = (uint8_t)fnUartBUS.read(); - cmdFrame.aux1 = (uint8_t)fnUartBUS.read(); - cmdFrame.aux2 = (uint8_t)fnUartBUS.read(); + cmdFrame.comnd = (uint8_t)fnDwCom.read(); + cmdFrame.aux1 = (uint8_t)fnDwCom.read(); + cmdFrame.aux2 = (uint8_t)fnDwCom.read(); Debug_printf("comnd: '%c' %u,%u,%u\n",cmdFrame.comnd,cmdFrame.comnd,cmdFrame.aux1,cmdFrame.aux2); diff --git a/lib/hardware/fnUART.cpp b/lib/hardware/fnUART.cpp index ebc0b78eb..75e037ff6 100644 --- a/lib/hardware/fnUART.cpp +++ b/lib/hardware/fnUART.cpp @@ -14,22 +14,19 @@ #include "../../include/debug.h" -#define UART_DEBUG UART_NUM_0 -#define UART_ADAMNET UART_NUM_2 -#ifdef BUILD_RS232 -#define UART_SIO UART_NUM_1 -#else -#define UART_SIO UART_NUM_2 -#endif - // Number of RTOS ticks to wait for data in TX buffer to complete sending #define MAX_FLUSH_WAIT_TICKS 200 #define MAX_READ_WAIT_TICKS 200 #define MAX_WRITE_BYTE_TICKS 100 #define MAX_WRITE_BUFFER_TICKS 1000 -UARTManager fnUartDebug(UART_DEBUG); -UARTManager fnUartBUS(UART_SIO); +// Serial "debug port" +UARTManager fnUartDebug(FN_UART_DEBUG); + +// Serial "bus port" (CoCo uses fnDwCom - configurable serial or TCP (Becker) drivewire port) +#ifndef BUILD_COCO +UARTManager fnUartBUS(FN_UART_BUS); +#endif // Constructor UARTManager::UARTManager(uart_port_t uart_num) : _uart_num(uart_num), _uart_q(NULL) {} @@ -531,10 +528,4 @@ size_t Print::println(struct tm * timeinfo, const char * format) } */ -#else - -#ifdef BUILD_COCO -#include "fnUART.h" - UARTManager fnUartBUS; -#endif #endif // ESP_PLATFORM diff --git a/lib/hardware/fnUART.h b/lib/hardware/fnUART.h index ec3e74950..df22a069f 100644 --- a/lib/hardware/fnUART.h +++ b/lib/hardware/fnUART.h @@ -4,8 +4,14 @@ #define FNUART_H #ifdef ESP_PLATFORM -#include -#endif +# include +# define FN_UART_DEBUG UART_NUM_0 +# ifdef BUILD_RS232 +# define FN_UART_BUS UART_NUM_1 +# else +# define FN_UART_BUS UART_NUM_2 +# endif +#endif // ESP_PLATFORM #if defined (_WIN32) // The inclusion of windows.h is causing compiler warnings where winsock2 is also needed, so added it here as most @@ -150,9 +156,13 @@ class UARTManager #endif // ESP_PLATFORM }; -#if defined(ESP_PLATFORM) || defined(BUILD_COCO) -extern UARTManager fnUartDebug; -extern UARTManager fnUartBUS; +#ifdef ESP_PLATFORM + // Serial "debug port" for FN-ESP (not available on FN-PC) + extern UARTManager fnUartDebug; + // Serial "bus port" (CoCo uses fnDwCom - configurable serial or TCP (Becker) drivewire port) + #ifndef BUILD_COCO + extern UARTManager fnUartBUS; + #endif #endif #endif //FNUART_H diff --git a/lib/hardware/fnUARTUnix.cpp b/lib/hardware/fnUARTUnix.cpp index a36c64eed..5d66b6b5f 100644 --- a/lib/hardware/fnUARTUnix.cpp +++ b/lib/hardware/fnUARTUnix.cpp @@ -168,13 +168,13 @@ void UARTManager::begin(int baud) struct serial_struct ss; if (ioctl(_fd, TIOCGSERIAL, &ss) == -1) { - Debug_printf("TIOCGSERIAL warning %d: %s\n", errno, strerror(errno)); + Debug_printf("UART warning: TIOCGSERIAL failed: %d - %s\n", errno, strerror(errno)); } else { ss.flags |= ASYNC_LOW_LATENCY; if (ioctl(_fd, TIOCSSERIAL, &ss) == -1) - Debug_printf("TIOCSSERIAL warning %d: %s\n", errno, strerror(errno)); + Debug_printf("UART warning: TIOCSSERIAL failed: %d - %s\n", errno, strerror(errno)); } #endif