# HG changeset patch # User Mychaela Falconia # Date 1603345187 0 # Node ID b55a81ce7497a0592621524d2baa3a2577a18dc6 # Parent efd85963ec85aacccfd599ca094124f5f7bf3655 fc-shell: implement MMI_BATTERY_IND sending diff -r efd85963ec85 -r b55a81ce7497 rvinterf/asyncshell/Makefile --- a/rvinterf/asyncshell/Makefile Mon Oct 19 18:00:37 2020 +0000 +++ b/rvinterf/asyncshell/Makefile Thu Oct 22 05:39:47 2020 +0000 @@ -2,9 +2,9 @@ CFLAGS= -O2 CPPFLAGS=-I../include PROG= fc-shell -OBJS= at.o help.o init.o keypress.o main.o oneshot.o parse.o pktsort.o \ - poweroff.o rxctl.o sendarb.o sendsp.o tchcmd.o tchplay.o tchrec.o \ - usercmd.o +OBJS= at.o battery.o help.o init.o keypress.o main.o oneshot.o parse.o \ + pktsort.o poweroff.o rxctl.o sendarb.o sendsp.o tchcmd.o tchplay.o \ + tchrec.o usercmd.o LIBS= ../libasync/libasync.a ../libg23/libg23.a ../libinterf/libinterf.a INSTALL_PREFIX= /opt/freecalypso diff -r efd85963ec85 -r b55a81ce7497 rvinterf/asyncshell/battery.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rvinterf/asyncshell/battery.c Thu Oct 22 05:39:47 2020 +0000 @@ -0,0 +1,73 @@ +/* + * Functions for sending MMI_BATTERY_IND primitives with simulated + * battery actions. + */ + +#include +#include +#include +#include +#include +#include +#include "pktmux.h" +#include "limits.h" +#include "exitcodes.h" + +static u_char mmi_battery_ind_fixedpart[24] = { + RVT_L23_HEADER, 0x97, 24, 0, + 0, 0, 0, 0, + 'P', 'C', 'O', ' ', + 'M', 'M', 'I', ' ', + 'M', 'M', 'I', ' ', + 0x03, 0x4E, 0, 0 +}; + +send_mmi_battery_ind(byte1, byte2) +{ + u_char pkt[28]; + + bcopy(mmi_battery_ind_fixedpart, pkt, 24); + pkt[24] = byte1; + pkt[25] = byte2; + /* 2 padding bytes */ + pkt[26] = 0; + pkt[27] = 0; + send_pkt_to_target(pkt, 28); + return(0); +} + +cmd_batt_common(argc, argv) + char **argv; +{ + u_char bytes[2]; + int i; + char *endp; + + for (i = 0; i < 2; i++) { + bytes[i] = strtoul(argv[i], &endp, 0); + if (*endp) { + printf("error: invalid batt argument\n"); + return(ERROR_USAGE); + } + } + return send_mmi_battery_ind(bytes[0], bytes[1]); +} + +void +cmd_batt_interactive(argstr) + char *argstr; +{ + char *argv[3]; + int argc, rc; + + rc = parse_interactive_command_into_argv(argstr, argv, 2, 2, &argc); + if (rc < 0) + return; + cmd_batt_common(argc, argv); +} + +cmd_batt_oneshot(argc, argv) + char **argv; +{ + return cmd_batt_common(argc - 1, argv + 1); +} diff -r efd85963ec85 -r b55a81ce7497 rvinterf/asyncshell/oneshot.c --- a/rvinterf/asyncshell/oneshot.c Mon Oct 19 18:00:37 2020 +0000 +++ b/rvinterf/asyncshell/oneshot.c Thu Oct 22 05:39:47 2020 +0000 @@ -9,6 +9,7 @@ #include "limits.h" #include "exitcodes.h" +extern int cmd_batt_oneshot(); extern int cmd_key_oneshot(); extern int cmd_keydown_oneshot(); extern int cmd_keyup_oneshot(); @@ -26,6 +27,7 @@ int maxargs; int (*func)(); } cmdtab[] = { + {"batt", 2, 2, cmd_batt_oneshot}, {"key", 1, 1, cmd_key_oneshot}, {"keydown", 1, 1, cmd_keydown_oneshot}, {"keyup", 1, 1, cmd_keyup_oneshot}, diff -r efd85963ec85 -r b55a81ce7497 rvinterf/asyncshell/usercmd.c --- a/rvinterf/asyncshell/usercmd.c Mon Oct 19 18:00:37 2020 +0000 +++ b/rvinterf/asyncshell/usercmd.c Thu Oct 22 05:39:47 2020 +0000 @@ -11,6 +11,7 @@ extern char usercmd[]; +extern void cmd_batt_interactive(); extern void cmd_disable(); extern void cmd_enable(); extern void cmd_help(); @@ -37,6 +38,7 @@ char *cmd; void (*func)(); } cmdtab[] = { + {"batt", cmd_batt_interactive}, {"disable", cmd_disable}, {"enable", cmd_enable}, {"exit", cmd_exit},