Premesso che lo utilizzo ormai da anni e per esperienza, letture
ecc ecc, ho trovato alcuni modi per risolvere scoccianti
problematiche che spesso compromettono lo stato della
connessione.
Per ulteriori dettagli potete vedere il thread nel presente ng:
"Simulare disconnessione presa usb"
o qualcosa del genere (sono andato a memoria).
Ok. Sintetizzando, la connessione a volte risulta bloccata,
quindi per ripristinarla devo disconnettermi, simulare il
distacco dall'usb per ripristinare la corretta comunicazione tra
cellulare e PC e quindi effettuare alcune manovre "strane" ma
efficaci che possono essere messe tutte in uno script di
comunicazione da dare in pasto a chat.
Il problema è che questo script è un po' complicato (neanche
tanto concettualmente, ma diciamo che non è il solito script di
connessione).
In particolare lo script deve valutare lo stato della
comunicazione tra cell e rete-gprs di Tim, in quanto quando
avvengono i blocchi cui accennavo, risulta bloccato proprio il
device (risponde ai comandi AT, ma non riesce a connettersi).
Per esempio tra le alte verifiche devo capire com'è lo stato
della registrazione alla rete gprs:
Il comando del device è:
AT+CGATT?
che restituisce 0 o 1 a seconda se il device sia registrato alla
rete gprs o meno. Io devo tra le altre cose,
- verificare lo stato attuale della "registrazione" (AT+CGATT?)
- SE è 1 (ovvero attualmente registrato) deregistrarlo
(AT+CGATT=0) e quindi provare a registrarlo nuovamente
(AT+CGATT=1).
- SE è 0 tentare la registrazione (AT+CGATT=1)
- Quindi in entrambi i casi riverificare lo stato di
registrazione (AT+CGATT?) e a seconda del responso effettuare
o la riconnessione (at+cgdcont=1,"IP","ibox.tim.it".....
atd*99***1# ---> CONNECT ---> passa la palla a pppd), oppure
cercare altre vie per sbloccare la situazione e riverificare lo
stato di registrazione.
In poche parole se il telefono risponde bene al cambio di stato
di registrazione significa che si può procedere alla
registrazione e connessione. Se invece il valore di AT+CGATT
non riesce a passare agevolmente da 0 ad 1 o viceversa,
allora, il device è sicuramente in uno stato di "limbo" e va
sbloccato in altri modi che non sto ora a spiegare nel
dettaglio.
Ok, ora la domanda sarebbe: come fare uno script chat capace
d'eseguire i punti descritti sopra? comprese le operazioni
condizionali?
Ci si può servire del solo "chat" o sarebbe meglio passare per
expect (che peraltro non conosco per nulla), o sono meglio
ulteriori vie?
Grazie in anticipo per la pazienza e scusate la lunghezza del
post. La domanda in realtà era breve, ma l'antefatto condito con
un espempio ha reso il tutto più lungo anche se spero non noioso
da leggere e comunque maggiormente comprensibile e
contestualizzato sulla problematica in cui si inserisce.
Saluti e a presto :-P