diff --git a/spnav.c b/spnav.c index cf43138..c2ad96c 100644 --- a/spnav.c +++ b/spnav.c @@ -1060,3 +1060,28 @@ int spnav_cfg_get_grab(void) } return rr.data[0]; } + +int spnav_cfg_set_serial(const char *devpath) +{ + struct reqresp rr = {0}; + int i, len = strlen(devpath); + + while(len > 0) { + rr.data[0] = len; + for(i=0; i<6; i++) { + rr.data[i + 1] = *devpath ? *devpath++ : 0; + } + len -= 6; + + if(request(REQ_SCFG_SERDEV, &rr, TIMEOUT) == -1) { + return -1; + } + } + return 0; +} + +const char *spnav_cfg_get_serial(char *buf, int bufsz) +{ + return query_str(buf, bufsz, REQ_GCFG_SERDEV); +} + diff --git a/spnav.h b/spnav.h index b4f48e1..c3d9ecd 100644 --- a/spnav.h +++ b/spnav.h @@ -324,6 +324,9 @@ int spnav_cfg_get_led(void); /* returns led setting, -1 on error */ int spnav_cfg_set_grab(int state); int spnav_cfg_get_grab(void); /* returns 0:no-grab/1:grab, or -1 on error */ +int spnav_cfg_set_serial(const char *devpath); +const char *spnav_cfg_get_serial(char *buf, int bufsz); + #ifdef __cplusplus } #endif