Remote: Add procedure to test if high-level remote functions are available
Removes need for updated version string.
This commit is contained in:
parent
bfda64c656
commit
fc6ca5bc06
@ -51,18 +51,7 @@ int remote_init(bool verbose)
|
|||||||
}
|
}
|
||||||
if (verbose)
|
if (verbose)
|
||||||
DEBUG_WARN("Remote is %s\n", &construct[1]);
|
DEBUG_WARN("Remote is %s\n", &construct[1]);
|
||||||
char *p = strstr(&construct[1], "(Firmware v");
|
return 0;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool remote_target_get_power(void)
|
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)
|
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(
|
DEBUG_WARN(
|
||||||
"Please update BMP firmware for substantial speed increase!\n");
|
"Please update BMP firmware for substantial speed increase!\n");
|
||||||
return;
|
return;
|
||||||
|
@ -309,6 +309,9 @@ void remotePacketProcessHL(uint8_t i, char *packet)
|
|||||||
remote_ap.apsel = remotehston(2, packet);
|
remote_ap.apsel = remotehston(2, packet);
|
||||||
remote_ap.dp = &remote_dp;
|
remote_ap.dp = &remote_dp;
|
||||||
switch (index) {
|
switch (index) {
|
||||||
|
case REMOTE_HL_CHECK:
|
||||||
|
_respond(REMOTE_RESP_OK, 0);
|
||||||
|
break;
|
||||||
case REMOTE_DP_READ:
|
case REMOTE_DP_READ:
|
||||||
packet += 2;
|
packet += 2;
|
||||||
uint16_t addr16 = remotehston(4, packet);
|
uint16_t addr16 = remotehston(4, packet);
|
||||||
|
@ -84,6 +84,7 @@
|
|||||||
#define REMOTE_RESP_NOTSUP 'N'
|
#define REMOTE_RESP_NOTSUP 'N'
|
||||||
|
|
||||||
/* High level protocol elements */
|
/* High level protocol elements */
|
||||||
|
#define REMOTE_HL_CHECK 'C'
|
||||||
#define REMOTE_HL_PACKET 'H'
|
#define REMOTE_HL_PACKET 'H'
|
||||||
#define REMOTE_DP_READ 'd'
|
#define REMOTE_DP_READ 'd'
|
||||||
#define REMOTE_LOW_ACCESS 'L'
|
#define REMOTE_LOW_ACCESS 'L'
|
||||||
@ -142,6 +143,7 @@
|
|||||||
#define HEX_U32(x) '%', '0', '8', 'x'
|
#define HEX_U32(x) '%', '0', '8', 'x'
|
||||||
#define CHR(x) '%', 'c'
|
#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, \
|
#define REMOTE_MEM_READ_STR (char []){ REMOTE_SOM, REMOTE_HL_PACKET, REMOTE_MEM_READ, \
|
||||||
HEX_U32(address), HEX_U32(count), REMOTE_EOM, 0 }
|
HEX_U32(address), HEX_U32(count), REMOTE_EOM, 0 }
|
||||||
#define REMOTE_DP_READ_STR (char []){ REMOTE_SOM, REMOTE_HL_PACKET, REMOTE_DP_READ, \
|
#define REMOTE_DP_READ_STR (char []){ REMOTE_SOM, REMOTE_HL_PACKET, REMOTE_DP_READ, \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user