From fc6ca5bc06eb4260c54b8097dbdd9c68af9651b3 Mon Sep 17 00:00:00 2001 From: Uwe Bonnes Date: Tue, 7 Jul 2020 21:12:41 +0200 Subject: [PATCH] Remote: Add procedure to test if high-level remote functions are available Removes need for updated version string. --- src/platforms/hosted/bmp_remote.c | 20 +++++++------------- src/remote.c | 3 +++ src/remote.h | 2 ++ 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/platforms/hosted/bmp_remote.c b/src/platforms/hosted/bmp_remote.c index 22d7a49..9b67947 100644 --- a/src/platforms/hosted/bmp_remote.c +++ b/src/platforms/hosted/bmp_remote.c @@ -51,18 +51,7 @@ int remote_init(bool verbose) } if (verbose) DEBUG_WARN("Remote is %s\n", &construct[1]); - char *p = strstr(&construct[1], "(Firmware v"); - if (!p) - return -1; - int major = 0, minor = 0, step = 0; - int res = sscanf(p, "(Firmware v%d.%d.%d", &major, &minor, &step); - if (res !=3) - return -1; - uint32_t version = major * 10000 + minor * 100 + step; - /* check that firmare is > 1.6.1 */ - if (version < 10602) - return -1; - return 0; + return 0; } bool remote_target_get_power(void) @@ -346,7 +335,12 @@ static void remote_ap_mem_write_sized( void remote_adiv5_dp_defaults(ADIv5_DP_t *dp) { - if (remote_init(false)) { + uint8_t construct[REMOTE_MAX_MSG_SIZE]; + int s = snprintf((char *)construct, REMOTE_MAX_MSG_SIZE, "%s", + REMOTE_HL_CHECK_STR); + platform_buffer_write(construct, s); + s = platform_buffer_read(construct, REMOTE_MAX_MSG_SIZE); + if ((!s) || (construct[0] == REMOTE_RESP_ERR)) { DEBUG_WARN( "Please update BMP firmware for substantial speed increase!\n"); return; diff --git a/src/remote.c b/src/remote.c index 89887eb..8341892 100644 --- a/src/remote.c +++ b/src/remote.c @@ -309,6 +309,9 @@ void remotePacketProcessHL(uint8_t i, char *packet) remote_ap.apsel = remotehston(2, packet); remote_ap.dp = &remote_dp; switch (index) { + case REMOTE_HL_CHECK: + _respond(REMOTE_RESP_OK, 0); + break; case REMOTE_DP_READ: packet += 2; uint16_t addr16 = remotehston(4, packet); diff --git a/src/remote.h b/src/remote.h index dfb8a6d..550f7eb 100644 --- a/src/remote.h +++ b/src/remote.h @@ -84,6 +84,7 @@ #define REMOTE_RESP_NOTSUP 'N' /* High level protocol elements */ +#define REMOTE_HL_CHECK 'C' #define REMOTE_HL_PACKET 'H' #define REMOTE_DP_READ 'd' #define REMOTE_LOW_ACCESS 'L' @@ -142,6 +143,7 @@ #define HEX_U32(x) '%', '0', '8', 'x' #define CHR(x) '%', 'c' +#define REMOTE_HL_CHECK_STR (char []){ REMOTE_SOM, REMOTE_HL_PACKET, REMOTE_HL_CHECK, REMOTE_EOM, 0 } #define REMOTE_MEM_READ_STR (char []){ REMOTE_SOM, REMOTE_HL_PACKET, REMOTE_MEM_READ, \ HEX_U32(address), HEX_U32(count), REMOTE_EOM, 0 } #define REMOTE_DP_READ_STR (char []){ REMOTE_SOM, REMOTE_HL_PACKET, REMOTE_DP_READ, \