Add application version compatibility check.
This commit is contained in:
parent
423d3bb86b
commit
3a981a3313
|
@ -302,8 +302,24 @@ namespace hw {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool device_ledger::reset() {
|
bool device_ledger::reset() {
|
||||||
send_simple(INS_RESET);
|
reset_buffer();
|
||||||
return true;
|
int offset = set_command_header_noopt(INS_RESET);
|
||||||
|
memmove(this->buffer_send+offset, MONERO_VERSION, strlen(MONERO_VERSION));
|
||||||
|
offset += strlen(MONERO_VERSION);
|
||||||
|
this->buffer_send[4] = offset-5;
|
||||||
|
this->length_send = offset;
|
||||||
|
this->exchange();
|
||||||
|
|
||||||
|
ASSERT_X(this->length_recv>=3, "Communication error, less than three bytes received. Check your application version.");
|
||||||
|
|
||||||
|
unsigned int device_version = 0;
|
||||||
|
device_version = VERSION(this->buffer_recv[0], this->buffer_recv[1], this->buffer_recv[2]);
|
||||||
|
|
||||||
|
ASSERT_X (device_version >= MINIMAL_APP_VERSION,
|
||||||
|
"Unsupported device application version: " << VERSION_MAJOR(device_version)<<"."<<VERSION_MINOR(device_version)<<"."<<VERSION_MICRO(device_version) <<
|
||||||
|
" At least " << MINIMAL_APP_VERSION_MAJOR<<"."<<MINIMAL_APP_VERSION_MINOR<<"."<<MINIMAL_APP_VERSION_MICRO<<" is required.");
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int device_ledger::exchange(unsigned int ok, unsigned int mask) {
|
unsigned int device_ledger::exchange(unsigned int ok, unsigned int mask) {
|
||||||
|
|
|
@ -41,6 +41,18 @@ namespace hw {
|
||||||
|
|
||||||
namespace ledger {
|
namespace ledger {
|
||||||
|
|
||||||
|
/* Minimal supported version */
|
||||||
|
#define MINIMAL_APP_VERSION_MAJOR 1
|
||||||
|
#define MINIMAL_APP_VERSION_MINOR 3
|
||||||
|
#define MINIMAL_APP_VERSION_MICRO 1
|
||||||
|
|
||||||
|
#define VERSION(M,m,u) ((M)<<16|(m)<<8|(u))
|
||||||
|
#define VERSION_MAJOR(v) (((v)>>16)&0xFF)
|
||||||
|
#define VERSION_MINOR(v) (((v)>>8)&0xFF)
|
||||||
|
#define VERSION_MICRO(v) (((v)>>0)&0xFF)
|
||||||
|
|
||||||
|
#define MINIMAL_APP_VERSION VERSION(MINIMAL_APP_VERSION_MAJOR, MINIMAL_APP_VERSION_MINOR, MINIMAL_APP_VERSION_MICRO)
|
||||||
|
|
||||||
void register_all(std::map<std::string, std::unique_ptr<device>> ®istry);
|
void register_all(std::map<std::string, std::unique_ptr<device>> ®istry);
|
||||||
|
|
||||||
#ifdef WITH_DEVICE_LEDGER
|
#ifdef WITH_DEVICE_LEDGER
|
||||||
|
|
Loading…
Reference in New Issue