mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-10-27 01:22:51 +08:00
🍉 Sync 2026-05-13 08:40:30
This commit is contained in:
1 parent
2206a0ea68
commit
6bb23e315c
7 files changed
+93
-410
No files matched your search
@@ -3,8 +3,8 @@ include $(TOPDIR)/rules.mk
|
||||
LUCI_TITLE:=Information dashboard for 3G/LTE dongle
|
||||
LUCI_DEPENDS:=+modeminfo
|
||||
PKG_LICENSE:=GPLv3
|
||||
PKG_VERSION:=0.4.5
|
||||
PKG_RELEASE:=1
|
||||
PKG_VERSION:=0.4.6
|
||||
PKG_RELEASE:=2
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
|
||||
/*
|
||||
Written by Konstantine Shevlakov at <shevlakov@132lan.ru> 2023
|
||||
Written by Konstantine Shevlakov at <shevlakov@132lan.ru> 2023 - 2026
|
||||
|
||||
Licensed to the GNU General Public License v3.0.
|
||||
|
||||
@@ -45,20 +45,44 @@ var callQMIPort = rpc.declare({
|
||||
}
|
||||
});
|
||||
|
||||
var callCheckQmiinfo = rpc.declare({
|
||||
object: 'file',
|
||||
method: 'stat',
|
||||
params: [ 'path' ],
|
||||
expect: { '': {} }
|
||||
});
|
||||
|
||||
var maindesc = _('Modeminfo: Configuration');
|
||||
var mdesc = _('Configuration panel of Modeminfo.');
|
||||
var qfdesc = _('Get modem data via qmicli (experimental). Require install qmi-utils.');
|
||||
var qfdesc = _('Get modem data via qmi. Require install qminfo.');
|
||||
var sdesc = _('Select serial port.');
|
||||
var qdesc = _('Select qmi port.');
|
||||
var lacdec = _('Show LAC and CID in decimal.');
|
||||
var mmdesc = _('Get device hardware name via mmcli utility if aviable.');
|
||||
var qmidesc = _('Enable qmi-proxy mode.');
|
||||
var qmidesc = _('Set qmi mode.');
|
||||
var idesc = _('Short info on Overview page');
|
||||
var portplace = _('Please select a port');
|
||||
|
||||
return view.extend({
|
||||
render: function(){
|
||||
|
||||
load: function() {
|
||||
return callCheckQmiinfo('/usr/bin/qminfo')
|
||||
.then(function(stat) {
|
||||
return (stat && stat.size != null);
|
||||
})
|
||||
.catch(function() {
|
||||
return false;
|
||||
});
|
||||
},
|
||||
|
||||
render: function(qmiinfoInstalled){
|
||||
|
||||
var qfdesc = qmiinfoInstalled
|
||||
? _('Get modem data via qmi.')
|
||||
: _('Please install qminfo package.');
|
||||
|
||||
var m, s, o;
|
||||
|
||||
m = new form.Map('modeminfo', maindesc, mdesc);
|
||||
|
||||
s = m.section(form.TypedSection, 'general', _('General option'), null);
|
||||
@@ -85,6 +109,11 @@ return view.extend({
|
||||
|
||||
o = s.option(form.Flag, 'qmi_mode', _('Use QMI'), qfdesc);
|
||||
o.rmempty = true;
|
||||
if (!qmiinfoInstalled) {
|
||||
o.readonly = true;
|
||||
o.write = function() {};
|
||||
o.cfgvalue = function() { return '0'; };
|
||||
}
|
||||
|
||||
o = s.option(form.ListValue, 'device', _('Data port'), sdesc);
|
||||
o.load = function(section_id) {
|
||||
@@ -117,7 +146,10 @@ return view.extend({
|
||||
o.rmempty = true;
|
||||
o.depends('qmi_mode', '0');
|
||||
|
||||
o = s.option(form.Flag, 'qmi_proxy', _('QMI proxy'), qmidesc);
|
||||
o = s.option(form.ListValue, 'qmi_trap', _('QMI mode'), qmidesc);
|
||||
o.value('',_('Auto'));
|
||||
o.value('qmi',_('Direct QMI'));
|
||||
o.value('mbim',_('QMI over MBIM'));
|
||||
o.rmempty = true;
|
||||
o.depends('qmi_mode', '1');
|
||||
|
||||
|
||||
@@ -87,8 +87,14 @@ msgstr "Страница конфигурации Modeminfo."
|
||||
msgid "Use QMI"
|
||||
msgstr "Использовать QMI"
|
||||
|
||||
msgid "Get modem data via qmicli (experimental). Require install qmi-utils."
|
||||
msgstr "Получать данные модема через qmicli (экспериментально). Требуется установленный qmi-utils."
|
||||
msgid "Get modem data via qmi. Require install qminfo."
|
||||
msgstr "Получать данные модема через qmi. Требуется установленный qminfo."
|
||||
|
||||
msgid "Get modem data via qmi."
|
||||
msgstr "Получать данные модема через qmi."
|
||||
|
||||
msgid "Please install qminfo package."
|
||||
msgstr "Установите пакет qminfo."
|
||||
|
||||
msgid "Data port"
|
||||
msgstr "Порт данных"
|
||||
@@ -111,11 +117,20 @@ msgstr "Если доступно, использовать утилиту mmcli
|
||||
msgid "Name via mmcli"
|
||||
msgstr "Имя модема через mmcli"
|
||||
|
||||
msgid "QMI proxy"
|
||||
msgstr "QMI прокси"
|
||||
msgid "QMI mode"
|
||||
msgstr "Режим QMI"
|
||||
|
||||
msgid "Enable qmi-proxy mode."
|
||||
msgstr "Задействовать режим прокси."
|
||||
msgid "Set qmi mode."
|
||||
msgstr "Задействовать режим QMI."
|
||||
|
||||
msgid "Auto"
|
||||
msgstr "Автоматически"
|
||||
|
||||
msgid "Direct QMI"
|
||||
msgstr "Только QMI"
|
||||
|
||||
msgid "QMI over MBIM"
|
||||
msgstr "QMI через MBIM"
|
||||
|
||||
msgid "Index page"
|
||||
msgstr "На главную"
|
||||
@@ -145,4 +160,4 @@ msgid "Wait devices information"
|
||||
msgstr "Ожидание ответа от устройств"
|
||||
|
||||
msgid "Error loading information"
|
||||
msgstr "Получение данных завершилось ошибкой"
|
||||
msgstr "Получение данных завершилось ошибкой"
|
||||
+2
-14
@@ -1,8 +1,8 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=modeminfo
|
||||
PKG_VERSION:=0.4.5
|
||||
PKG_RELEASE:=2
|
||||
PKG_VERSION:=0.4.6
|
||||
PKG_RELEASE:=3
|
||||
PKG_MAINTAINER:=Konstantine Shevlakov <shevlakov@132lan.ru>
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
@@ -20,12 +20,6 @@ define Package/$(PKG_NAME)
|
||||
TITLE:=Signal information for 3G/LTE dongle
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)-qmi
|
||||
$(call Package/$(PKG_NAME)/Default)
|
||||
DEPENDS:=+modeminfo +qmi-utils
|
||||
TITLE:=QMI addon for modeminfo
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)-telegram
|
||||
$(call Package/$(PKG_NAME)/Default)
|
||||
DEPENDS:=+modeminfo +telegrambot
|
||||
@@ -78,11 +72,6 @@ define Package/$(PKG_NAME)/install
|
||||
$(CP) ./root/etc/config/* $(1)/etc/config
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)-qmi/install
|
||||
$(INSTALL_DIR) $(1)/usr/share/modeminfo/scripts
|
||||
$(CP) ./root/usr/share/modeminfo-qmi/* $(1)/usr/share/modeminfo/scripts
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)-telegram/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/telegrambot/plugins
|
||||
$(CP) ./root/usr/lib/telegrambot/plugins/* $(1)/usr/lib/telegrambot/plugins
|
||||
@@ -105,5 +94,4 @@ $(eval $(call SerialPlugin,dell,+kmod-usb-serial-option,Dell DW5821e,DELL))
|
||||
#$(eval $(call SerialPlugin,yuge,+kmod-usb-serial-option,Yuge CLM920,YUGE))
|
||||
#$(eval $(call SerialPlugin,zte,+kmod-usb-serial-option,ZTE MF823/MF823D,ZTE))
|
||||
$(eval $(call SerialPlugin,thales,+kmod-usb-serial-option,Thales MV31-W T99W175,THALES))
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)-qmi))
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)-telegram))
|
||||
@@ -1,180 +0,0 @@
|
||||
# qmi addon for luci-app-modeminfo
|
||||
# require full version libqmi (need build in SDK)
|
||||
# (c) 2020-2024 written by Konstantine Shevlakov (c) at <shevlakov@132lan.ru>
|
||||
|
||||
get_device_info(){
|
||||
DEVPORT=$(uci -q get modeminfo.@modeminfo[$s].device_qmi)
|
||||
DEVCTL=$(echo $DEVPORT | awk -F [\/] '{print $NF}')
|
||||
if [ -x /usr/bin/qmicli ]; then
|
||||
export QMICTL="qmicli -p -d $DEVPORT"
|
||||
else
|
||||
logger -t "luci-app-modeminfo" "qmicli not found!"
|
||||
exit 1
|
||||
fi
|
||||
if [ $DEVPORT ]; then
|
||||
QPROXY=$(uci -q get modeminfo.@modeminfo[$s].qmi_proxy)
|
||||
if [ $QPROXY -eq 1 ]; then
|
||||
export QMICTL="qmicli -p -d $DEVPORT"
|
||||
else
|
||||
export QMICTL="qmicli -d $DEVPORT"
|
||||
fi
|
||||
else
|
||||
for qmi in $(ls /dev/cdc-wdm*); do
|
||||
if [ $qmi ]; then
|
||||
QMI_DEVICE=$qmi
|
||||
if [ -n $(which qmicli) ]; then
|
||||
export QMICTL="qmicli -p -d ${QMI_DEVICE}"
|
||||
else
|
||||
logger -t "luci-app-modeminfo" "qmi-utils not found or installed!"
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
logger -t "luci-app-modeminfo" "Device is no QMI mode or not found!"
|
||||
exit 0
|
||||
fi
|
||||
done
|
||||
if [ $qmi ]; then
|
||||
uci set modeminfo.@modeminfo[0].device_qmi="$qmi"
|
||||
uci commit modeminfo
|
||||
break
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
get_hardware_info(){
|
||||
MANUF=$(cat $(readlink -f /sys/class/usbmisc/${DEVCTL})/../../../manufacturer)
|
||||
MODEL="$(cat $(readlink -f /sys/class/usbmisc/${DEVCTL})/../../../product)"
|
||||
|
||||
if [ -n "$(echo "${MODEL}" | grep -Ei "${MANUF}")" ] || [ -n "$(echo "${MANUF}" | grep -Ei QUAL)" ]; then
|
||||
DEVICE="${MODEL}"
|
||||
else
|
||||
DEVICE="${MANUF} ${MODEL}"
|
||||
fi
|
||||
|
||||
IMEI=`$QMICTL --dms-get-ids | awk -F [:] '/IMEI:/{gsub("'\''|\*", ""); print $2}'`
|
||||
FW=$($QMICTL --dms-get-software-version | awk -F [:] '/version:/{print $2}' )
|
||||
ICCID=$($QMICTL --dms-uim-get-iccid | awk -F [:] '/ICCID/{gsub("'\''",""); print $2}' )
|
||||
}
|
||||
|
||||
get_lte_bw(){
|
||||
case $BWDx in
|
||||
3) BWDL=1 ;;
|
||||
5) BWDL=2 ;;
|
||||
10) BWDL=3 ;;
|
||||
15) BWDL=4 ;;
|
||||
20) BWDL=5 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
get_signal_info(){
|
||||
NETWORK=`$QMICTL --nas-get-home-network | awk -F [:] '/MCC|MNC|Description/{gsub("'\''|^ ", "");print $2}'`
|
||||
COPS_MCC=$(echo ${NETWORK} |awk '{print $1}')
|
||||
COPS_MNC_RAW=$(echo ${NETWORK} |awk '{print $2}')
|
||||
if [ $COPS_MNC_RAW -lt 10 ]; then
|
||||
COPS_MNC=0${COPS_MNC_RAW}
|
||||
else
|
||||
COPS_MNC=$COPS_MNC_RAW
|
||||
fi
|
||||
COPS="$(echo "${NETWORK}" |tail -1)"
|
||||
SIGNAL=$($QMICTL --nas-get-signal-info)
|
||||
MODE=$(echo "$SIGNAL" | awk 'NR ==2{gsub("\:", ""); print $1}')
|
||||
STRENGTH=$(echo "$SIGNAL" | awk '/RSSI|RSRQ|RSRP|SNR|ECIO/{gsub("'\''",""); print $2}')
|
||||
SERVING=$($QMICTL --nas-get-serving-system)
|
||||
RFBAND=$($QMICTL --nas-get-rf-band-info)
|
||||
if [ $MODE == "LTE" ]; then
|
||||
MIMO=$($QMICTL --nas-get-tx-rx-info=lte | grep 'RX Chain' | wc -l)
|
||||
LACTAC=$(echo "$SERVING" | awk -F [:] '/tracking area code:|3GPP cell ID:/{gsub("'\''",""); print $2}')
|
||||
LAC_NUM=$(echo $LACTAC | awk '{print $2}')
|
||||
CID_NUM=$(echo $LACTAC | awk '{print $1}')
|
||||
CID=$(echo $CID_NUM | awk '{printf "%x\n", $1}' |awk '{print toupper($1)}')
|
||||
LAC=$(echo $LAC_NUM | awk '{printf "%x\n", $1}' |awk '{print toupper($1)}')
|
||||
CSQ_RSSI=$(echo ${STRENGTH} | awk '{print $1}')
|
||||
RSRQ=$(echo ${STRENGTH} | awk '{print $2}')
|
||||
RSRP=$(echo ${STRENGTH} | awk '{print $3}')
|
||||
SINR=$(echo ${STRENGTH} | awk '{printf "%.0f\n", $4}')
|
||||
ENBx=$(echo $CID | sed -e 's/..$//')
|
||||
ENBID=$(printf %d 0x$ENBx)
|
||||
CELL=$(printf %d 0x${CID: -2})
|
||||
PCI=$($QMICTL --nas-get-cell-location-info | awk -F [:] '/Serving Cell ID:/{gsub("'\''",""); print $2}')
|
||||
LTE_O=$($QMICTL --nas-get-lte-cphy-ca-info)
|
||||
LTE_CA=$(echo "$LTE_O" |grep -i '^secondary cell' | wc -l)
|
||||
BWDx=$(echo "$LTE_O" | grep -A4 'Primary Cell Info' | awk -F [:] '/DL Bandwidth:/{gsub("'\''| ", ""); print $2}')
|
||||
get_lte_bw
|
||||
if [ $LTE_CA -ge 1 ]; then
|
||||
BWC=$(echo "$LTE_O" | grep -A4 '^Secondary Cell' | awk -F [:] '/DL Bandwidth:/{gsub("'\''| ", ""); printf "+"$2}')
|
||||
BWCA=$(($BWDx$BWC))
|
||||
BANDCH=$(echo "$LTE_O" | grep -A4 '^Primary Cell' | awk -F [:] '/RX Channel:/{gsub("'\''| ", ""); print $2}')
|
||||
# Fix qmicli band T77W968 modem
|
||||
case $DEVICE in
|
||||
*Dell*|*LN960*) CA=$(echo "$LTE_O" | grep -A4 '^Secondary Cell' | awk -F [:-] '/LTE Band:/{gsub("'\''| ", ""); printf " "$NF-1}') ;;
|
||||
*) CA=$(echo "$LTE_O" | grep -A4 '^Secondary Cell' | awk -F [:-] '/LTE Band:/{gsub("'\''| ", ""); print $NF}') ;;
|
||||
esac
|
||||
for cc in $CA; do
|
||||
SCC=$SCC+$cc
|
||||
done
|
||||
else
|
||||
BANDCH=$(echo "$RFBAND" | awk -F [:] '/Active Channel:/{gsub("'\''",""); print $2}' | head -1)
|
||||
if [ "x" == "x$BWDx" ]; then
|
||||
BWDx=$(echo "$RFBAND" | awk -F [:] '/Bandwidth:/{gsub("'\''| ",""); print $2}' | tail -1)
|
||||
get_lte_bw
|
||||
fi
|
||||
fi
|
||||
EARFCN=$BANDCH
|
||||
else
|
||||
MIMO=$($QMICTL --nas-get-tx-rx-info=umts | grep 'RX Chain' | wc -l)
|
||||
case $MIMO in
|
||||
0) MIMO=$($QMICTL --nas-get-tx-rx-info=gsm | grep 'RX Chain' | wc -l) ;;
|
||||
esac
|
||||
LACTAC=$(echo "$SERVING" | awk -F [:] '/3GPP location area code:|3GPP cell ID:/{gsub("'\''",""); print $2}')
|
||||
LAC_NUM=$(echo $LACTAC | awk '{print $1}')
|
||||
CID_NUM=$(echo $LACTAC | awk '{print $2}')
|
||||
LAC=$(echo $LAC_NUM | awk '{printf "%x\n", $1}' |awk '{print toupper($1)}')
|
||||
CID=$(echo $CID_NUM | awk '{printf "%x\n", $1}' |awk '{print toupper($1)}')
|
||||
CSQ_RSSI=$(echo ${STRENGTH} | awk '{print $1}')
|
||||
if [ $(echo ${STRENGTH} | awk '{print$2}') ]; then
|
||||
SINR=$(echo ${STRENGTH} | awk '{printf "%.0f\n", $2}')
|
||||
fi
|
||||
BANDCH=$(echo "$RFBAND" | awk -F [:] '/Active Channel:/{gsub("'\''| ",""); print $2}')
|
||||
EARFCN=$(echo $BANDCH | awk '{print $2}')
|
||||
|
||||
fi
|
||||
CSQ_PER=$(echo $CSQ_RSSI |awk '{printf "%d\n", (100*(1-(-50 - $1)/(-50 - -120)))}')
|
||||
[ $CSQ_RSSI -ge -110 ] && CSQ_COL="black"
|
||||
[ $CSQ_RSSI -ge -105 ] && CSQ_COL="red"
|
||||
[ $CSQ_RSSI -ge -95 ] && CSQ_COL="orange"
|
||||
[ $CSQ_RSSI -ge -75 ] && CSQ_COL="green"
|
||||
if [ $CSQ_PER -gt 100 ]; then
|
||||
CSQ_PER=100
|
||||
elif [ $CSQ_PER -lt 0 ]; then
|
||||
CSQ_PER=0
|
||||
fi
|
||||
EARFCN=$BANDCH
|
||||
DISTANCE=$($QMICTL --nas-get-cell-location-info | awk '/LTE Timing Advance:/{gsub("\047",""); printf "%.2f\n", (299792458*($4*10^-6)/1000)/2}')
|
||||
REG=$(echo "$SERVING" | awk -F [:] '/Registration state:/{print $2}' | sed "s/'//g" | awk '{print $1}')
|
||||
case $REG in
|
||||
registered)
|
||||
REGST=1
|
||||
;;
|
||||
registration-denied)
|
||||
REGST=3
|
||||
;;
|
||||
esac
|
||||
DECIMAL=$(uci -q get modeminfo.@general[0].decimail)
|
||||
if [ "x${DECIMAL}" != "x" ]; then
|
||||
LAC=$(printf %d 0x$LAC_NUM)
|
||||
CID=$(printf %d 0x$CID_NUM)
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#get_device
|
||||
function get_data_in(){
|
||||
get_hardware_info >/dev/null 2>&1
|
||||
get_signal_info >/dev/null 2>&1
|
||||
}
|
||||
|
||||
get_hwinfo(){
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -1,176 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
get_device_info(){
|
||||
DEVPORT=$(uci -q get modeminfo.@modeminfo[0].device_qmi)
|
||||
DEVCTL=$(echo $DEVPORT | awk -F [\/] '{print $NF}')
|
||||
if ! [ -x /sbin/uqmi ]; then
|
||||
logger -t "luci-app-modeminfo" "uqmi not found!"
|
||||
exit 1
|
||||
fi
|
||||
if [ $DEVPORT ]; then
|
||||
QPROXY=$(uci -q get modeminfo.@modeminfo[0].qmi_proxy)
|
||||
if [ "x${QPROXY}" = "x" ]; then
|
||||
export MBIM=""
|
||||
else
|
||||
export MBIM="-m"
|
||||
fi
|
||||
else
|
||||
for qmi in $(ls /dev/cdc-wdm*); do
|
||||
if [ $qmi ]; then
|
||||
QMI_DEVICE=$qmi
|
||||
if ! [ -n $(which uqmi) ]; then
|
||||
logger -t "luci-app-modeminfo" "uqmi not found or installed!"
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
logger -t "luci-app-modeminfo" "Device is no QMI mode or not found!"
|
||||
exit 0
|
||||
fi
|
||||
done
|
||||
if [ $qmi ]; then
|
||||
uci set modeminfo.@modeminfo[0].device_qmi="$qmi"
|
||||
uci commit modeminfo
|
||||
break
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
get_data(){
|
||||
case $1 in
|
||||
hw)
|
||||
uqmi ${MBIM} -s -d ${DEVPORT} --get-imei
|
||||
;;
|
||||
net)
|
||||
uqmi ${MBIM} -s -d ${DEVPORT} \
|
||||
--get-serving-system
|
||||
;;
|
||||
sig)
|
||||
uqmi ${MBIM} -s -d ${DEVPORT} \
|
||||
--get-signal-info
|
||||
;;
|
||||
lte)
|
||||
uqmi ${MBIM} -d ${DEVPORT} \
|
||||
--get-lte-cphy-ca-info
|
||||
;;
|
||||
base)
|
||||
uqmi ${MBIM} -s -d ${DEVPORT} \
|
||||
--get-system-info
|
||||
;;
|
||||
mimo)
|
||||
uqmi ${MBIM} -s -d ${DEVPORT} \
|
||||
--nas-get-tx-rx-info=$MODE
|
||||
;;
|
||||
sta)
|
||||
uqmi ${MBIM} -d ${DEVPORT} \
|
||||
--get-cell-location-info
|
||||
;;
|
||||
esac
|
||||
killall -9 uqmi >/dev/null 2>&1
|
||||
}
|
||||
|
||||
get_hardware_info(){
|
||||
DATA=$(get_data hw)
|
||||
MANUF=$(cat $(readlink -f /sys/class/usbmisc/${DEVCTL})/../../../manufacturer)
|
||||
MODEL="$(cat $(readlink -f /sys/class/usbmisc/${DEVCTL})/../../../product)"
|
||||
DEVICE="$MANUF $MODEL"
|
||||
IMEI=$(echo "$DATA" | tail -1 | tr -d '"')
|
||||
}
|
||||
|
||||
get_signal_info(){
|
||||
DATA=$(get_data net)
|
||||
eval $(jsonfilter -s "$DATA" -e "COPS=$['plmn_description']" \
|
||||
-e "COPS_MCC=$['plmn_mcc']" \
|
||||
-e "COPS_MNC_RAW=$['plmn_mnc']" \
|
||||
-e "REG=$['registration']" \
|
||||
-e "ROAM=$['roaming']" )
|
||||
DATA=$(get_data sig)
|
||||
eval $(jsonfilter -s "$DATA" -e "MODE=$['type']" \
|
||||
-e "CSQ_RSSI=$['rssi']" \
|
||||
-e "RSRP=$['rsrp']" \
|
||||
-e "RSRQ=$['rsrq']" \
|
||||
-e "SINR=$['snr']")
|
||||
DATA=$(get_data base)
|
||||
eval $(jsonfilter -s "$DATA" -e "TAC_NUM=$['$MODE']['tracking_area_code']" \
|
||||
-e "CELL=$['$MODE']['cell_id']" \
|
||||
-e "ENBID=$['$MODE']['enodeb_id']")
|
||||
DATA=$(get_data sta)
|
||||
EARFCN=$(echo "$DATA" | awk '/channel/{gsub(",",""); print $2}' | head -1)
|
||||
PCI=$(echo "$DATA" | awk '/serving_cell_id/{gsub(",",""); print $2}' | head -1)
|
||||
case $MODE in
|
||||
LTE)
|
||||
DATA=$(get_data lte)
|
||||
eval $(jsonfilter -s "$DATA" -e "BW=$['primary']['bandwidth']")
|
||||
CA=$(echo "$DATA" | awk -F [:] '/secondary_/{gsub("\"","");print $1}')
|
||||
LTE_CA=$(echo "$CA" | wc -l)
|
||||
if [ $LTE_CA -ge 1 ]; then
|
||||
BWCA=0
|
||||
for a in $CA; do
|
||||
eval $(jsonfilter -s "$DATA" -e "SCx=$['$a']['band']" \
|
||||
-e "BWC=$['$a']['bandwidth']")
|
||||
SCC="$SCC+$SCx"
|
||||
BWCA=$(($BWCA+$BWC))
|
||||
done
|
||||
BWCA=$(($BW+$BWCA))
|
||||
fi
|
||||
|
||||
;;
|
||||
esac
|
||||
MODE=$(echo $MODE | awk '{print toupper($1)}')
|
||||
if [ "$COPS_MNC_RAW" -lt "10" ]; then
|
||||
COPS_MNC=0${COPS_MNC_RAW}
|
||||
else
|
||||
COPS_MNC=${COPS_MNC_RAW}
|
||||
fi
|
||||
if [ "x${COPS}" = "x" ]; then
|
||||
COPS="${COPS_MCC} ${COPS_MNC}"
|
||||
fi
|
||||
|
||||
SINR=$(echo $SINR | awk '{printf "%.0f\n", $1}')
|
||||
LAC=$(echo $TAC_NUM | awk '{printf "%x\n", toupper($1)}')
|
||||
ENBID_h=$(printf %x $ENBID)
|
||||
CELL_h=$(printf %x $CELL)
|
||||
if [ "$CELL" -le 15 ]; then
|
||||
CELL_h="0${CID_h}"
|
||||
fi
|
||||
CID="${ENBID_h}${CELL_h}"
|
||||
CID_NUM=$(printf %d 0x$CID)
|
||||
|
||||
case $REG in
|
||||
not_registered) REGST=0 ;;
|
||||
registered)
|
||||
case $ROAM in
|
||||
true) REGST=5 ;;
|
||||
*) REGST=1 ;;
|
||||
esac
|
||||
;;
|
||||
searching) REGST=2 ;;
|
||||
registering_denied) REGST=3 ;;
|
||||
unknown) REGST=4 ;;
|
||||
esac
|
||||
|
||||
CSQ_PER=$(echo $CSQ_RSSI |awk '{printf "%d\n", (100*(1-(-50 - $1)/(-50 - -120)))}')
|
||||
[ $CSQ_RSSI -ge -110 ] && CSQ_COL="black"
|
||||
[ $CSQ_RSSI -ge -105 ] && CSQ_COL="red"
|
||||
[ $CSQ_RSSI -ge -95 ] && CSQ_COL="orange"
|
||||
[ $CSQ_RSSI -ge -75 ] && CSQ_COL="green"
|
||||
if [ $CSQ_PER -gt 100 ]; then
|
||||
CSQ_PER=100
|
||||
elif [ $CSQ_PER -lt 0 ]; then
|
||||
CSQ_PER=0
|
||||
fi
|
||||
|
||||
DECIMAL=$(uci -q get modeminfo.@modeminfo[0].general)
|
||||
if [ "x${DECIMAL}" != "x" ]; then
|
||||
LAC=$LAC_NUM
|
||||
CID=$CID_NUM
|
||||
fi
|
||||
}
|
||||
|
||||
function get_data_in(){
|
||||
get_hardware_info >/dev/null 2>&1
|
||||
get_signal_info >/dev/null 2>&1
|
||||
}
|
||||
|
||||
get_hwinfo(){
|
||||
continue
|
||||
}
|
||||
@@ -4,7 +4,7 @@ trap 'cleanup >/dev/null 2>&1; exit 0' INT TERM
|
||||
SECTIONS=$(echo $(uci show modeminfo | awk -F [\]\[\@=] '/=modeminfo/{print $3}'))
|
||||
|
||||
get_vars(){
|
||||
for v in device device_qmi qmi_proxy decimail qmi_mode; do
|
||||
for v in device device_qmi qmi_trap decimail qmi_mode; do
|
||||
eval $v=$(uci -q get modeminfo.@modeminfo[${s}].${v} 2>/dev/null)
|
||||
done
|
||||
}
|
||||
@@ -62,17 +62,12 @@ function if_null() {
|
||||
|
||||
|
||||
qmi_device(){
|
||||
if [ $qmi_mode ]; then
|
||||
SCRIPT=/usr/share/modeminfo/scripts/modeminfo-qmi
|
||||
else
|
||||
SCRIPT=/usr/share/modeminfo/scripts/modeminfo
|
||||
fi
|
||||
|
||||
if [ -r $SCRIPT ]; then
|
||||
[ -n "$qmi_mode" ] || SCRIPT=/usr/share/modeminfo/scripts/modeminfo
|
||||
[ -r $SCRIPT ] && {
|
||||
. $SCRIPT
|
||||
else
|
||||
} || {
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -86,24 +81,33 @@ echo "{ \"modem\" : ["
|
||||
|
||||
for s in $SECTIONS; do
|
||||
m=$((${s} + 1))
|
||||
if [ "$s" ]; then
|
||||
get_vars
|
||||
qmi_device
|
||||
get_device_info
|
||||
get_data_in >/dev/null 2>&1
|
||||
if_null
|
||||
json_status
|
||||
fi
|
||||
if [ "$ARGSLEN" = "${m}" ]; then
|
||||
echo " }"
|
||||
get_vars
|
||||
if [ $qmi_mode ]; then
|
||||
if [ "$s" ]; then
|
||||
/usr/bin/qminfo $device_qmi --json --${qmi_trap}
|
||||
fi
|
||||
if [ "$ARGSLEN" != "${m}" ]; then
|
||||
echo ","
|
||||
fi
|
||||
else
|
||||
echo " },"
|
||||
if [ "$s" ]; then
|
||||
qmi_device
|
||||
get_device_info
|
||||
get_data_in >/dev/null 2>&1
|
||||
if_null
|
||||
json_status
|
||||
fi
|
||||
if [ "$ARGSLEN" = "${m}" ]; then
|
||||
echo " }"
|
||||
else
|
||||
echo " },"
|
||||
fi
|
||||
# flush modem variables
|
||||
unset BWCA SCC SC BWDx BWPx BWCx BWDL LTE_CA \
|
||||
DEVICE COPS MODE CSQ_PER LAC CSQ_RSSI \
|
||||
SINR RSRP IMEI REGST EARFCN CHIPTEMP FW \
|
||||
ICCID IMSI RSRQ DISTANCE
|
||||
fi
|
||||
# flush modem variables
|
||||
unset BWCA SCC SC BWDx BWPx BWCx BWDL LTE_CA \
|
||||
DEVICE COPS MODE CSQ_PER LAC CSQ_RSSI \
|
||||
SINR RSRP IMEI REGST EARFCN CHIPTEMP FW \
|
||||
ICCID IMSI RSRQ DISTANCE
|
||||
done
|
||||
|
||||
echo "]}"
|
||||
|
||||
Reference in new issue
Block a user