diff options
author | Dan Williams <dcbw@redhat.com> | 2012-09-27 10:55:20 -0500 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2012-09-27 10:55:20 -0500 |
commit | fb65cba607eaebaccd9b1df64074297e6f197d1a (patch) | |
tree | 85473ce760ff205315459d720cc027d556c675d4 /libqcdm/src/commands.c | |
parent | 1b5804895f9eeb81fc469acfaa316ba3ea1da86e (diff) |
qcdm: add qcdm_cmd_control_new() to set operating mode
Diffstat (limited to 'libqcdm/src/commands.c')
-rw-r--r-- | libqcdm/src/commands.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/libqcdm/src/commands.c b/libqcdm/src/commands.c index 53d831e5..e5a94b0b 100644 --- a/libqcdm/src/commands.c +++ b/libqcdm/src/commands.c @@ -366,6 +366,35 @@ qcdm_cmd_esn_result (const char *buf, size_t len, int *out_error) /**********************************************************************/ size_t +qcdm_cmd_control_new (char *buf, size_t len, u_int8_t mode) +{ + char cmdbuf[5]; + DMCmdControl *cmd = (DMCmdControl *) &cmdbuf[0]; + + qcdm_return_val_if_fail (buf != NULL, 0); + qcdm_return_val_if_fail (len >= sizeof (*cmd) + DIAG_TRAILER_LEN, 0); + + memset (cmd, 0, sizeof (*cmd)); + cmd->code = DIAG_CMD_CONTROL; + cmd->mode = htole16 ((u_int16_t) mode); + + return dm_encapsulate_buffer (cmdbuf, sizeof (*cmd), sizeof (cmdbuf), buf, len); +} + +QcdmResult * +qcdm_cmd_control_result (const char *buf, size_t len, int *out_error) +{ + qcdm_return_val_if_fail (buf != NULL, NULL); + + if (!check_command (buf, len, DIAG_CMD_CONTROL, sizeof (DMCmdControl), out_error)) + return NULL; + + return qcdm_result_new (); +} + +/**********************************************************************/ + +size_t qcdm_cmd_cdma_status_new (char *buf, size_t len) { char cmdbuf[3]; |