FreeCalypso > hg > freecalypso-tools
view rvinterf/asyncshell/helpfile @ 465:003e48f8ebe1
rvinterf/etmsync/fsnew.c: cast 0 to (char *) for execl sentinel
I generally don't use NULL and use plain 0 instead, based on a "NULL
considered harmful" discussion on the classiccmp mailing list many aeons
ago (I couldn't find it, and I reason that it must have been 2005 or
earlier), but a recent complaint by a packager sent me searching, and I
found this:
https://ewontfix.com/11/
While I don't give a @#$% about "modern" systems and code-nazi tools,
I realized that passing a plain 0 as a pointer sentinel in execl is wrong
because it will break on systems where pointers are longer than the plain
int type. Again, I don't give a @#$% about the abomination of x86_64 and
the like, but if anyone ever manages to port my code to something like a
PDP-11 (16-bit int, 32-bit long and pointers), then passing a plain 0
as a function argument where a pointer is expected most definitely won't
work: if the most natural stack slot and SP alignment unit is 16 bits,
fitting an int, with longs and pointers taking up two such slots, then
the call stack will be totally wrong with a plain 0 passed for a pointer.
Casting the 0 to (char *) ought to be the most kosher solution for the
most retro systems possible.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 11 Feb 2019 00:00:19 +0000 |
parents | 688380565e0f |
children | fa6fee41f06e |
line wrap: on
line source
=== main === all The following commands are available: at AT commands to the target disable Disable receiving and display of certain packet types enable Enable receiving and display of certain packet types exit Exit from fc-shell key Send keystroke event to UI firmware on the target keydown Send key down event to UI firmware on the target keyup Send key up event to UI firmware on the target poweroff Send power-off ETM command packet to the target quit Alias for exit send Send arbitrary RVTMUX packet to the target sp Send GPF system primitive to the target str Send arbitrary strings to ATI tch TCH commands, see help tch tch-dl Enable/disable TCH downlink forwarding on the target tgtreset Send reset/reboot ETM command packet to the target unterm Send unterminated strings to ATI To get help on any command, type help and the command keyword. === at === AT Any fc-shell command input that begins with the characters "at" or "AT" is sent literally to the AT command interpreter (ATI) in the target firmware via the FreeCalypso-defined "AT" RVTMUX channel. Use the str command (see help str) to send strings to ATI which do not begin with "at" or "AT", e.g., when sending SMS. Any time you send anything to ATI, fc-shell automatically performs the equivalent of an enable ati command so you can see ATI's responses; any asynchronous output from ATI is also enabled as a side effect. === disable === enable {dis,en}able ati {dis,en}able gpf {dis,en}able tch fc-shell is fully asynchronous: user commands cause RVTMUX packets to be sent to the target, whereas incoming packets from the target whose reception and display is enabled are decoded and displayed. The disable and enable commands tell fc-shell to disable or enable receiving and display of the specified packet types (RVTMUX channels); multiple channels may be listed in a single command. === exit === quit This command is self-explanatory. === key key <key-sequence> This command sends a GPF system primitive to the MMI entity in the target firmware that encodes a simulated keystroke or a sequence of simulated keystrokes. Digits 0-9 are sent naturally, star and hash keys are sent as '*' and '#' ASCII characters, and the remaining keys on the D-Sample keypad are encoded as short all-uppercase ASCII strings as follows: UP, DOWN, LEFT, RIGHT and CENTER: directional keys LSOFT and RSOFT: "soft left" and "soft right" keys directly under the LCD SEND and END: green and red keys, respectively VOL_PLUS, VOL_MINUS and EXTRA: the 3 side buttons on the D-Sample handset Both single-character and long-named keys can be run together, for example: key RSOFT* -- keypad lock or unlock sequence key 5551212SEND -- enter digits 5551212, then SEND button to start the call === keydown === keyup keydown <key-name> keyup <key-name> The basic key command sends a KEY_SEQUENCE command (encoded via a GPF CONFIG system primitive) to the MMI entity in the target firmware; TI's firmware implementation then generates first a key down event, then a key up event for each key in the transmitted sequence. TI's firmware also supports similarly- encoded KEY_PRESS and KEY_RELEASE commands which generate only a single key down or key up event, respectively; our keydown and keyup commands provide access to this functionality. Only single keys can be sent with these commands, not sequences. === poweroff This command sends a power-off request in the form of an ETM ABB register write command packet to the target. === send send xx xx xx xx... This command sends an arbitrary RVTMUX packet to the target, given as raw hex bytes. === sp sp <dest> <command> This command sends a GPF system primitive to the target. The first blank- delimited word after the sp command keyword is the protocol stack destination to which the sysprim is to be sent, and the rest of the string is passed literally to the target. This command also automatically performs an equivalent of enable gpf so you can see the response to your sysprim; you may later need to issue a disable gpf command to stop the occasional asynchronous noise that may be emitted on the GPF RVTMUX channel by various G23M components. === str str <arbitrary text> This command sends everything after the str command keyword to the AT command interpreter (ATI) in the target firmware via the FreeCalypso-defined "AT" RVTMUX channel. This command can be used to send strings to ATI which do not begin with "at" or "AT", as may be needed when sending SMS. Any time you send anything to ATI, fc-shell automatically performs the equivalent of an enable ati command so you can see ATI's responses; any asynchronous output from ATI is also enabled as a side effect. === tch === TCH The commands in this set exercise the experimental TCH rerouting feature implemented in some FreeCalypso GSM firmware versions; these commands have any effect only when run against one of these specially built fw versions. The available commands are: tch dump-raw Enable or disable the raw dump mode tch play Play a file into TCH uplink tch record Record TCH downlink in a file tch status Show current status of TCH operations Type help tch <subcmd> to get the detailed description of each of these tch subcommands. === tch:dump-raw tch dump-raw on|off This command tells fc-shell what it should do with incoming packets on the RVTMUX TCH multiplex channel. If the raw dump mode is off (the default), fc-shell processes these incoming packets intelligently; if the raw dump mode is on, fc-shell dumps these packets in raw hex and does nothing more, presenting the behaviour it had before tch play and tch record commands were implemented. tch play and tch record cannot be used when the raw dump mode is enabled. === tch:play tch play <filename> # start TCH UL play tch play stop # stop TCH UL play before the end of the UL play file Please refer to the doc/TCH-bit-access article in the FreeCalypso host tools source for the details. === tch:record tch record <filename> # start TCH DL recording tch record stop # stop TCH DL recording Please refer to the doc/TCH-bit-access article in the FreeCalypso host tools source for the details. === tch:status This command shows the current status of tch record (running or not running), the current status of tch play (running or not running, outstanding uplink frame count) and the current state of the raw dump mode (enabled or disabled). === tch-dl tch-dl on|off This command sends a TCH_CONFIG_REQ packet to the target, requesting that TCH downlink forwarding be enabled or disabled. You typically don't need to issue this command explicitly when you use the higher level tch record functionality, but it is available nonetheless. === tgtreset This command sends a reset/reboot request ETM command packet to the target. === unterm unterm <arbitrary text> This command sends everything after the unterm command keyword to the AT command interpreter (ATI) in the target firmware via the FreeCalypso-defined "AT" RVTMUX channel. Unlike the more classic str command, strings sent with unterm are marked as unterminated, meaning that the receiving code in ATI will not automatically add the usual terminating CR or ^Z at the end, and will instead wait for a continuation. This mechanism allows long command or message strings to be sent in pieces, with the first and any intermediate pieces sent as unterm and the last piece sent with str, causing the entire string to be acted upon. This unterm extension to the AT-over-RVTMUX mechanism was added to our Magnetite and Selenite firmwares in early 2019, allowing this mechanism to be used for sending and writing SMS in PDU mode, which requires longer strings than the maximum that can be sent in one piece over RVTMUX. Any time you send anything to ATI, fc-shell automatically performs the equivalent of an enable ati command so you can see ATI's responses; any asynchronous output from ATI is also enabled as a side effect.