Всем доброго времени суток.
Продолжаю делиться наработками по теме.
В ситуации отсутствия интернета, ASUS Tinker Board при включении устанавливает системное время на 12 часов 50 минут 13 января 2013 года.
Синхронизация с GPS.
Код:
#!/system/bin/sh
dev=$(cat /etc/gps.conf | grep GPSPORT | cut -d " " -f 2)
while [ -z $(ls -1 ${dev}) ]; do
sleep 5
done
indicator=$(cat ${dev} | grep -m 1 GGA | head -1 | cut -d "," -f 8)
if [ -z ${indicator} ]; then
indicator=1
fi
while [ ${indicator} -le 1 ]; do
sleep 5
indicator=$(cat ${dev} | grep -m 1 GGA | head -1 | cut -d "," -f 8)
done
while [ 0 = 0 ]; do
RMC=$(cat ${dev} | grep -m 1 RMC | head -1)
get_time=$(echo ${RMC} | cut -d "," -f 2)
get_date=$(echo ${RMC} | cut -d "," -f 10)
month=$(echo ${get_date} | cut -c 3-4)
day=$(echo ${get_date} | cut -c 1-2)
hours=$(echo ${get_time} | cut -c 1-2)
minutes=$(echo ${get_time} | cut -c 3-4)
year=$(echo ${get_date} | cut -c 5-8)
seconds=$(echo ${get_time} | cut -c 5-6)
date -u ${month}${day}${hours}${minutes}${year}.${seconds}
if [ $(date +%s) -lt 1595765879 ]; then
sleep 5
else
sleep 1800
fi
done
exit 0
Добавляем в скрипт автозагрузки:
Код:
/system/bin/time_gps.sh > /dev/null &
В итоге:
1. Ждем включения GPS приемника;
2. Ждем сигналы времени (
GGA) от двух и более спутников;
3. Синхронизируем время и дату (
RMC);
3.1. Если установленная дата и время меньше 1595765879 секунд с 01.01.1970, то повторяем синхронизацию через 5 сек.;
3.2. Если установленная дата и время больше 1595765879 секунд с 01.01.1970, то повторяем синхронизацию через 30 мин.