Sync of comgt work

pull/1/head
Igor Zalatov (from Citadel PC) 2022-09-20 16:34:24 +03:00
parent a45a34f8af
commit 4332c7b9e9
39 changed files with 137 additions and 103 deletions

View File

@ -8,16 +8,16 @@ COMGT_LICENSE = GPL
COMGT_LICENSE_FILES = LICENSE COMGT_LICENSE_FILES = LICENSE
define COMGT_EXTRACT_CMDS define COMGT_EXTRACT_CMDS
cp ../general/package/demo-openipc/src/* $(@D)/ cp -a ../general/package/comgt/* $(@D)/
endef endef
define COMGT_BUILD_CMDS define COMGT_BUILD_CMDS
(cd $(@D); $(TARGET_CC) -s comgt.c -o comgt) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/src
endef endef
define COMGT_INSTALL_TARGET_CMDS define COMGT_INSTALL_TARGET_CMDS
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/sbin $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/sbin
install -m 0755 -D $(@D)/comgt $(TARGET_DIR)/usr/sbin/comgt install -m 0755 -D $(@D)/src/comgt $(TARGET_DIR)/usr/sbin/comgt
endef endef
$(eval $(generic-package)) $(eval $(generic-package))

View File

@ -0,0 +1,30 @@
# send using this command:
# gcom -d /dev/ttyUSB0 -v -e -s sendsms.comgt
# Ensure you fill in your phone number below or it wont send!
opengt
# set the terminal settings
set com 115200n81
# echo commands
set comecho on
# use a tiny delay between each keypress
set senddelay 0.02
# wait for things to be silent on the serial port
waitquiet 1 0.2
# reset things a bit
flash 0.1
# set it to textmode
send "AT+CMGF=1^m"
# wait for OK
waitfor 1 "OK"
# tell it we want to send a SMS and to what number
send "AT+CMGS=\"003538XXXXXXXX\"^m"
# the modem will present a > and wait for you to input your message
waitfor 1 ">"
send $env("SMS_MSG")
# and expect you to end your message with ^Z
send "^Z"
# wait for it to send
waitfor 5 "OK"
exit 0

View File

@ -0,0 +1,25 @@
#
# Makefile - build and install the comgt package
#
# Copyright (C) 2005 Martin Gregorie, martin@gregorie.org
# Copyright (C) 2006 Paul Hardwick, paul@peck.org.uk
# Copyright (C) 2022 Igor Zalatov, flyrouter@gmail.com
#
all: comgt
install:
chmod a+x $(BIN)
clean:
-rm *.o comgt
comgt: comgt.o
cc comgt.o $(LDFLAGS) -o comgt
comgt.o: comgt.c comgt.h
cc comgt.c $(CFLAGS)
comgt: comgt.c comgt.h
$(CC) $(CFLAGS) -o comgt $< $(LDFLAGS)

View File

@ -30,7 +30,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <signal.h> #include <signal.h>
#include <termio.h> #include <termios.h>
#include <fcntl.h> #include <fcntl.h>
#include <unistd.h> #include <unistd.h>
#include <string.h> #include <string.h>
@ -81,7 +81,7 @@ char token[MAXTOKEN]; /* For gettoken() returns */
char scriptfile[MAXPATH]; /* Script file name */ char scriptfile[MAXPATH]; /* Script file name */
char scriptfilepath[MAXPATH]; /* temp storage for full path */ char scriptfilepath[MAXPATH]; /* temp storage for full path */
BOOL verbose=0; /* Log actions */ BOOL verbose=0; /* Log actions */
struct termio cons, stbuf, svbuf; /* termios: svbuf=before, stbuf=while */ struct termios cons, stbuf, svbuf; /* termios: svbuf=before, stbuf=while */
int comfd=0; /* Communication file descriptor. Defaults to stdin. */ int comfd=0; /* Communication file descriptor. Defaults to stdin. */
char msg[STRINGL]; /* Massage messages here */ char msg[STRINGL]; /* Massage messages here */
int preturn,returns[MAXGOSUBS]; int preturn,returns[MAXGOSUBS];
@ -91,6 +91,7 @@ unsigned long hstart,hset;
char NullString[]={ "" }; char NullString[]={ "" };
BOOL lastcharnl=1; /* Indicate that last char printed from getonebyte BOOL lastcharnl=1; /* Indicate that last char printed from getonebyte
was a nl, so no new one is needed */ was a nl, so no new one is needed */
BOOL tty=1;
//"open com \"/dev/modem\"\nset com 38400n81\nset senddelay 0.05\nsend \"ATi^m\"\nget 2 \" ^m\" $s\nprint \"Response : \",$s,\"\\n\"\nget 2 \" ^m\" $s\nprint \"Response :\",$s,\"\\n\"\nget 2 \" ^m\" $s\nprint \"Response : \",$s,\"\\n\"\n\n"; //"open com \"/dev/modem\"\nset com 38400n81\nset senddelay 0.05\nsend \"ATi^m\"\nget 2 \" ^m\" $s\nprint \"Response : \",$s,\"\\n\"\nget 2 \" ^m\" $s\nprint \"Response :\",$s,\"\\n\"\nget 2 \" ^m\" $s\nprint \"Response : \",$s,\"\\n\"\n\n";
@ -172,7 +173,7 @@ void dotestkey(void) {
/* Exit after resetting terminal settings */ /* Exit after resetting terminal settings */
void ext(long xtc) { void ext(long xtc) {
ioctl(1, TCSETA, &cons); ioctl(1, TCSETS, &cons);
exit(xtc); exit(xtc);
} }
@ -920,24 +921,24 @@ BOOL getonoroff(void) {
void setcom(void) { void setcom(void) {
stbuf.c_cflag &= ~(CBAUD | CSIZE | CSTOPB | CLOCAL | PARENB); stbuf.c_cflag &= ~(CBAUD | CSIZE | CSTOPB | CLOCAL | PARENB);
stbuf.c_cflag |= (speed | bits | CREAD | clocal | parity | stopbits ); stbuf.c_cflag |= (speed | bits | CREAD | clocal | parity | stopbits );
if (ioctl(comfd, TCSETA, &stbuf) < 0) { if (tty && ioctl(comfd, TCSETS, &stbuf) < 0) {
serror("Can't ioctl set device",1); serror("Can't ioctl set device",1);
} }
} }
void doset(void) { void doset(void) {
struct termio console; struct termios console;
int a,b; int a,b;
gettoken(); gettoken();
if(strcmp(token,"echo")==0) { if(strcmp(token,"echo")==0) {
a=0; a=0;
if(getonoroff()) a=ECHO|ECHOE; if(getonoroff()) a=ECHO|ECHOE;
if(ioctl(0, TCGETA, &console)<0) { if(ioctl(0, TCGETS, &console)<0) {
serror("Can't ioctl FD zero!\n",2); serror("Can't ioctl FD zero!\n",2);
} }
console.c_lflag &= ~(ECHO | ECHOE); console.c_lflag &= ~(ECHO | ECHOE);
console.c_lflag |= a; console.c_lflag |= a;
ioctl(0, TCSETA, &console); ioctl(0, TCSETS, &console);
} }
else if(strcmp(token,"senddelay")==0) { else if(strcmp(token,"senddelay")==0) {
senddelay=10000L*getdvalue(); senddelay=10000L*getdvalue();
@ -1224,7 +1225,7 @@ void doclose(void) {
if(strcmp(token,"hardcom")==0) { if(strcmp(token,"hardcom")==0) {
if(comfd== -1) serror("Com device not open",1); if(comfd== -1) serror("Com device not open",1);
vmsg("Closing device"); vmsg("Closing device");
if (ioctl(comfd, TCSETA, &svbuf) < 0) { if (tty && ioctl(comfd, TCSETS, &svbuf) < 0) {
sprintf(msg,"Can't ioctl set device %s.\n",device); sprintf(msg,"Can't ioctl set device %s.\n",device);
serror(msg,1); serror(msg,1);
} }
@ -1266,12 +1267,17 @@ void opengt(void) {
ext(1); ext(1);
} }
} }
if (ioctl (comfd, TCGETA, &svbuf) < 0) { if (isatty (comfd))
tty=1;
else
tty=0;
if (tty && ioctl (comfd, TCGETS, &svbuf) < 0) {
sprintf(msg,"Can't control %s, please try again.\n",device); sprintf(msg,"Can't control %s, please try again.\n",device);
serror(msg,1); serror(msg,1);
} }
setenv("COMGTDEVICE",device,1); setenv("COMGTDEVICE",device,1);
ioctl(comfd, TCGETA, &stbuf); if (tty)
ioctl(comfd, TCGETS, &stbuf);
speed=stbuf.c_cflag & CBAUD; speed=stbuf.c_cflag & CBAUD;
if (high_speed == 0) strcpy(cspeed,"115200"); if (high_speed == 0) strcpy(cspeed,"115200");
else strcpy(cspeed,"57600"); else strcpy(cspeed,"57600");
@ -1281,7 +1287,7 @@ void opengt(void) {
parity=stbuf.c_cflag & (PARENB | PARODD); parity=stbuf.c_cflag & (PARENB | PARODD);
stbuf.c_iflag &= ~(IGNCR | ICRNL | IUCLC | INPCK | IXON | IXANY | IGNPAR ); stbuf.c_iflag &= ~(IGNCR | ICRNL | IUCLC | INPCK | IXON | IXANY | IGNPAR );
stbuf.c_oflag &= ~(OPOST | OLCUC | OCRNL | ONLCR | ONLRET); stbuf.c_oflag &= ~(OPOST | OLCUC | OCRNL | ONLCR | ONLRET);
stbuf.c_lflag &= ~(ICANON | XCASE | ECHO | ECHOE | ECHONL); stbuf.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHONL);
stbuf.c_lflag &= ~(ECHO | ECHOE); stbuf.c_lflag &= ~(ECHO | ECHOE);
stbuf.c_cc[VMIN] = 1; stbuf.c_cc[VMIN] = 1;
stbuf.c_cc[VTIME] = 0; stbuf.c_cc[VTIME] = 0;
@ -1302,12 +1308,16 @@ void opendevice(void) {
} }
} }
else comfd=0; else comfd=0;
if (isatty (comfd))
if (ioctl (comfd, TCGETA, &svbuf) < 0) { tty=1;
else
tty=0;
if (tty && ioctl (comfd, TCGETS, &svbuf) < 0) {
sprintf(msg,"Can't ioctl get device %s.\n",device); sprintf(msg,"Can't ioctl get device %s.\n",device);
serror(msg,1); serror(msg,1);
} }
ioctl(comfd, TCGETA, &stbuf); if (tty)
ioctl(comfd, TCGETS, &stbuf);
speed=stbuf.c_cflag & CBAUD; speed=stbuf.c_cflag & CBAUD;
switch(speed) { switch(speed) {
case B0: strcpy(cspeed,"0");break; case B0: strcpy(cspeed,"0");break;
@ -1336,7 +1346,7 @@ void opendevice(void) {
parity=stbuf.c_cflag & (PARENB | PARODD); parity=stbuf.c_cflag & (PARENB | PARODD);
stbuf.c_iflag &= ~(IGNCR | ICRNL | IUCLC | INPCK | IXON | IXANY | IGNPAR ); stbuf.c_iflag &= ~(IGNCR | ICRNL | IUCLC | INPCK | IXON | IXANY | IGNPAR );
stbuf.c_oflag &= ~(OPOST | OLCUC | OCRNL | ONLCR | ONLRET); stbuf.c_oflag &= ~(OPOST | OLCUC | OCRNL | ONLCR | ONLRET);
stbuf.c_lflag &= ~(ICANON | XCASE | ECHO | ECHOE | ECHONL); stbuf.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHONL);
stbuf.c_lflag &= ~(ECHO | ECHOE); stbuf.c_lflag &= ~(ECHO | ECHOE);
stbuf.c_cc[VMIN] = 1; stbuf.c_cc[VMIN] = 1;
stbuf.c_cc[VTIME] = 0; stbuf.c_cc[VTIME] = 0;
@ -1553,7 +1563,7 @@ int main(int argc,char **argv) {
skip_default=0; skip_default=0;
filep=NULL; filep=NULL;
scriptspace=4096; scriptspace=4096;
ioctl(1, TCGETA, &cons); ioctl(1, TCGETS, &cons);
if((script=( char *)malloc(scriptspace))==NULL) { if((script=( char *)malloc(scriptspace))==NULL) {
serror("Could not malloc()",3); serror("Could not malloc()",3);
} }

View File

@ -102,12 +102,12 @@ BR2_PACKAGE_WIREGUARD_TOOLS=y
BR2_PACKAGE_MOSQUITTO=y BR2_PACKAGE_MOSQUITTO=y
BR2_PACKAGE_MOSQUITTO_BROKER=y BR2_PACKAGE_MOSQUITTO_BROKER=y
# DEBUG
BR2_PACKAGE_HOST_GDB=y
BR2_PACKAGE_GDB=y
# SMARTHOME # SMARTHOME
BR2_PACKAGE_COMGT=y BR2_PACKAGE_COMGT=y
# BR2_PACKAGE_DEMO_OPENIPC is not set # BR2_PACKAGE_DEMO_OPENIPC is not set
# BR2_PACKAGE_DBELL_INA219 is not set # BR2_PACKAGE_DBELL_INA219 is not set
# DEBUG
BR2_PACKAGE_HOST_GDB=y
BR2_PACKAGE_GDB=y

View File

@ -1,79 +0,0 @@
#
# Makefile - build and install the comgt package
# Copyright (C) 2005 Martin Gregorie
# Copyright (C) 2006 Paul Hardwick
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# martin@gregorie.org, paul@peck.org.uk
#
# $Id: Makefile,v 1.4 2006/10/20 14:30:19 pharscape Exp $
#
#
LIB = -L/usr/local/lib
INC = -I/usr/local/include
EXE = /usr/local/bin
MAN = /usr/share/man/man1
CPROG = comgt
SCRIPTPATH = /etc/comgt/
SCRIPTSRC = ./scripts/
BIN = $(CPROG)
MANP = comgt.1 sigmon.1
CFLAGS = -c
LDFLAGS =
all: $(BIN)
install:
chmod a-w $(BIN)
chmod u+rw $(BIN)
chmod a+x $(BIN)
cp $(BIN) $(EXE)
chmod a-wx $(MANP)
chmod u+rw $(MANP)
chmod a+r $(MANP)
cp $(MANP) $(MAN)
-mkdir $(SCRIPTPATH)
chmod a-w $(SCRIPTPATH)
chmod u+rw $(SCRIPTPATH)
chmod a+x $(SCRIPTPATH)
cp -f $(SCRIPTSRC)* $(SCRIPTPATH)
chmod a-w $(SCRIPTPATH)*
chmod u+rw $(SCRIPTPATH)*
chmod a+x $(SCRIPTPATH)*
uninstall:
cd $(EXE); rm $(BIN)
cd $(MAN); rm $(MANP)
-rm -r $(SCRIPTPATH)
clean:
-rm *.o
-rm $(CPROG)
-rm *~
-rm $(SCRIPTSRC)*~
comgt: comgt.o
cc comgt.o $(LDFLAGS) -o comgt
comgt.o: comgt.c comgt.h
cc comgt.c $(CFLAGS)

View File

@ -4,7 +4,6 @@ source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic-osdrv-t21/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic-osdrv-t31/Config.in" source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic-osdrv-t31/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic_patcher/Config.in" source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic_patcher/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/aura-httpd/Config.in" source "$BR2_EXTERNAL_INGENIC_PATH/package/aura-httpd/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ax-agent/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/dropbear-openipc/Config.in" source "$BR2_EXTERNAL_INGENIC_PATH/package/dropbear-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/baresip-openipc/Config.in" source "$BR2_EXTERNAL_INGENIC_PATH/package/baresip-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/fdk-aac-openipc/Config.in" source "$BR2_EXTERNAL_INGENIC_PATH/package/fdk-aac-openipc/Config.in"

View File

@ -0,0 +1,40 @@
source "$BR2_EXTERNAL_INGENIC_PATH/linux/Config.ext.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic-osdrv-t20/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic-osdrv-t21/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic-osdrv-t31/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ingenic_patcher/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/aura-httpd/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/dropbear-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/baresip-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/comgt/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/dbell-ina219/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/demo-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/fdk-aac-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ffmpeg-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/fwprintenv-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/i2c-telemetry/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/ipctool/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/json-c-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/lame-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libcurl-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libevent-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libhv-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libogg-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libre-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/librem-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libsrt-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/libwebsockets-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/linux-firmware-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/majestic-fonts/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/majestic/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/mbedtls-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/microbe-web/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/microsnander/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/motors/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/node-exporter/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/opus-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/rtl8188fu-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/uacme-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/vtund-openipc/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/xmdp/Config.in"
source "$BR2_EXTERNAL_INGENIC_PATH/package/yaml-cli/Config.in"

View File

@ -114,6 +114,11 @@ BR2_PACKAGE_UHTTPD=y
# Optional packages # Optional packages
BR2_PACKAGE_PPPD=y BR2_PACKAGE_PPPD=y
# SMARTHOME
BR2_PACKAGE_COMGT=y
BR2_PACKAGE_DEMO_OPENIPC=y
BR2_PACKAGE_DBELL_INA219=y
# DEBUG # DEBUG
BR2_PACKAGE_HOST_GDB=y BR2_PACKAGE_HOST_GDB=y
BR2_PACKAGE_GDB=y BR2_PACKAGE_GDB=y

View File

@ -0,0 +1 @@
../../general/package/comgt

View File

@ -0,0 +1 @@
../../general/package/dbell-ina219

View File

@ -0,0 +1 @@
../../general/package/demo-openipc

View File

@ -46,6 +46,7 @@ else
rm -rf openipc rm -rf openipc
git clone --depth=1 https://github.com/OpenIPC/firmware.git openipc git clone --depth=1 https://github.com/OpenIPC/firmware.git openipc
cp -afv projects/${PROJECT}/* openipc cp -afv projects/${PROJECT}/* openipc
cp -afv packages/* openipc/general/package
cd openipc cd openipc
./building.sh ${PROJECT} ./building.sh ${PROJECT}
2archive; 2tftp 2archive; 2tftp