diff --git a/atcmd b/atcmd new file mode 100644 index 0000000..9c9a9f9 --- /dev/null +++ b/atcmd @@ -0,0 +1,63 @@ +#!/bin/sh + +# AT Command Script Variables and Functions +TMP_DIR="/tmp" +DEVICE_FILE="/dev/smd7" +TIMEOUT=4 # Set a timeout for the response + +start_listening() { + cat "$DEVICE_FILE" > /tmp/device_readout & + CAT_PID=$! +} + +send_at_command() { + echo "Enter AT command (or type 'exit' to quit): " + read at_command + if [ "$at_command" = "exit" ]; then + return 1 + fi + echo -e "${at_command}\r" > "$DEVICE_FILE" +} + +wait_for_response() { + local start_time=$(date +%s) + local current_time + local elapsed_time + + echo "Command sent, waiting for response..." + while true; do + if grep -qe "OK" -e "ERROR" /tmp/device_readout; then + echo "Response received:" + cat /tmp/device_readout + return 0 + fi + current_time=$(date +%s) + elapsed_time=$((current_time - start_time)) + if [ "$elapsed_time" -ge "$TIMEOUT" ]; then + echo "Error: Response timed out." + return 1 + fi + sleep 1 + done +} + +cleanup() { + kill "$CAT_PID" + wait "$CAT_PID" 2>/dev/null + rm -f /tmp/device_readout +} + + if [ -c "$DEVICE_FILE" ]; then + while true; do + start_listening + send_at_command + if [ $? -eq 1 ]; then + cleanup + break + fi + wait_for_response + cleanup + done + else + echo "Error: Device $DEVICE_FILE does not exist or is not a character special file." + fi