Showing posts with label bash scripting csq gprs signal quality strength. Show all posts
Showing posts with label bash scripting csq gprs signal quality strength. Show all posts

Thursday, November 24, 2011

Get signal quality from GPRS modem

A quite sophisticated bash script for getting signal quality (AT+CSQ) from GPRS modem:



#!/bin/bash


function get_response
{
        local ECHO
        # cat will read the response, then die on timeout
        cat <&5 >$TMP &
        echo "$1" >&5
        # wait for cat to die
        wait $!


        exec 6<$TMP
        read ECHO <&6
        if [ "$ECHO" != "$1" ]
        then
                exec 6<&-
                return 1
        fi


        read ECHO <&6
        read RESPONSE <&6
        exec 6<&-
        return 0
}


TMP="/tmp/response"


# Clear out old response
: > $TMP


# Set modem with timeout of 5/10 a second
stty -F /dev/ttyACM0 -echo igncr -icanon onlcr ixon min 0 time 5


# Open modem on FD 5
exec 5<>/dev/ttyACM0


get_response "AT" || echo "Bad response"
RESPONSE=`cat $TMP`
echo "Response was ${RESPONSE}"


echo


get_response "AT+CSQ" || echo "Bad response"
RESPONSE=`cat $TMP`
echo "Response was ${RESPONSE}"


exec 5<&-