
14 changed files with 265 additions and 58 deletions
Binary file not shown.
@ -0,0 +1,77 @@
@@ -0,0 +1,77 @@
|
||||
#include <string.h> |
||||
#include "gcn64lib.h" |
||||
#include "../requests.h" |
||||
|
||||
int gcn64lib_getConfig(gcn64_hdl_t hdl, unsigned char param, unsigned char *rx, unsigned char rx_max) |
||||
{ |
||||
unsigned char cmd[2]; |
||||
int n; |
||||
|
||||
cmd[0] = RQ_GCN64_GET_CONFIG_PARAM; |
||||
cmd[1] = param; |
||||
|
||||
n = gcn64_exchange(hdl, cmd, 2, rx, rx_max); |
||||
if (n<2) |
||||
return n; |
||||
|
||||
n -= 2; |
||||
|
||||
// Drop the leading CMD and PARAM
|
||||
if (n) { |
||||
memmove(rx, rx+2, n); |
||||
} |
||||
|
||||
return n; |
||||
} |
||||
int gcn64lib_setConfig(gcn64_hdl_t hdl, unsigned char param, unsigned char *data, unsigned char len) |
||||
{ |
||||
unsigned char cmd[2 + len]; |
||||
int n; |
||||
|
||||
cmd[0] = RQ_GCN64_SET_CONFIG_PARAM; |
||||
cmd[1] = param; |
||||
memcpy(cmd + 2, data, len); |
||||
|
||||
n = gcn64_exchange(hdl, cmd, 2 + len, cmd, sizeof(cmd)); |
||||
if (n<0) |
||||
return n; |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
int gcn64lib_suspendPolling(gcn64_hdl_t hdl, unsigned char suspend) |
||||
{ |
||||
unsigned char cmd[2]; |
||||
int n; |
||||
|
||||
cmd[0] = RQ_GCN64_SUSPEND_POLLING; |
||||
cmd[1] = suspend; |
||||
|
||||
n = gcn64_exchange(hdl, cmd, 2, cmd, sizeof(cmd)); |
||||
if (n<0) |
||||
return n; |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
int gcn64lib_rawSiCommand(gcn64_hdl_t hdl, unsigned char channel, unsigned char *tx, unsigned char tx_len, unsigned char *rx, unsigned char max_rx) |
||||
{ |
||||
unsigned char cmd[3 + tx_len]; |
||||
int cmdlen, rx_len, n; |
||||
|
||||
cmd[0] = RQ_GCN64_RAW_SI_COMMAND; |
||||
cmd[1] = channel; |
||||
cmd[2] = tx_len; |
||||
memcpy(cmd+3, tx, tx_len); |
||||
cmdlen = 3 + tx_len; |
||||
|
||||
n = gcn64_exchange(hdl, cmd, cmdlen, rx, max_rx); |
||||
if (n<0) |
||||
return n; |
||||
|
||||
rx_len = rx[2]; |
||||
|
||||
memmove(rx, rx + 3, rx_len); |
||||
|
||||
return rx_len; |
||||
} |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
#ifndef _gcn64_lib_h__ |
||||
#define _gcn64_lib_h__ |
||||
|
||||
#include "gcn64.h" |
||||
|
||||
int gcn64lib_suspendPolling(gcn64_hdl_t hdl, unsigned char suspend); |
||||
int gcn64lib_setConfig(gcn64_hdl_t hdl, unsigned char param, unsigned char *data, unsigned char len); |
||||
int gcn64lib_getConfig(gcn64_hdl_t hdl, unsigned char param, unsigned char *rx, unsigned char rx_max); |
||||
int gcn64lib_rawSiCommand(gcn64_hdl_t hdl, unsigned char channel, unsigned char *tx, unsigned char tx_len, unsigned char *rx, unsigned char max_rx); |
||||
|
||||
#endif // _gcn64_lib_h__
|
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
#ifndef _gcn64_utils_h__ |
||||
#define _gcn64_utils_h__ |
||||
|
||||
#endif // _gcn64_utils_h__
|
||||
|
Loading…
Reference in new issue