summaryrefslogtreecommitdiffstats
path: root/src/mkii.c
diff options
context:
space:
mode:
authorPali Rohár <pali.rohar@gmail.com>2014-11-21 17:47:47 +0100
committerPali Rohár <pali.rohar@gmail.com>2014-11-21 17:47:47 +0100
commit8369f94195142fc2da816f401ee7843f90677e54 (patch)
treeecc409e9aba7176e634ada704ba8f5b01a19c4aa /src/mkii.c
parentf1095777c6c92f284ba2a8eb8b08a21476e4cb5f (diff)
download0xFFFF-8369f94195142fc2da816f401ee7843f90677e54.tar.bz2
mkii: Implement mkii_get_sw_ver
Diffstat (limited to 'src/mkii.c')
-rw-r--r--src/mkii.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/mkii.c b/src/mkii.c
index e3738bc..bcf6a3a 100644
--- a/src/mkii.c
+++ b/src/mkii.c
@@ -500,11 +500,21 @@ int mkii_set_nolo_ver(struct usb_device_info * dev, const char * ver) {
int mkii_get_sw_ver(struct usb_device_info * dev, char * ver, size_t size) {
- ERROR("Not implemented yet");
- (void)dev;
- (void)ver;
- (void)size;
- return -1;
+ char buf[2048];
+ struct mkii_message * msg;
+ int ret;
+
+ msg = (struct mkii_message *)buf;
+
+ memcpy(msg->data, "/version/sw_release", sizeof("/version/sw_release")-1);
+ ret = mkii_send_receive(dev->udev, MKII_GET_DEVICE, msg, sizeof("/version/sw_release")-1, msg, sizeof(buf));
+ if ( ret < 2 || msg->data[0] != 0 || msg->data[1] == 0 )
+ return -1;
+
+ msg->data[ret] = 0;
+ strncpy(ver, msg->data+1, size);
+ ver[size-1] = 0;
+ return strlen(ver);
}