Files
quectel-rgmii-toolkit/atcmd
iamromulan 0653478554 Create atcmd
atcmd script for sending at commands and reading their response.
2024-01-10 23:34:20 -05:00

64 lines
1.5 KiB
Bash

#!/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