Skip to content

Commit

Permalink
Merge pull request #3 from AIS-DeviceInnovation/addReset
Browse files Browse the repository at this point in the history
Add reset
  • Loading branch information
AIS-DeviceInnovation authored Jun 8, 2021
2 parents c74e10b + 88f7f6c commit 9f55dba
Show file tree
Hide file tree
Showing 10 changed files with 146 additions and 140 deletions.
7 changes: 3 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@

![Library Version](https://img.shields.io/badge/Version-1.1.1-green)
![Library Version](https://img.shields.io/badge/Version-1.1.2-green)

# AIS Library

## AIS BC95 API
AIS BC95 API Library, used on arduino, have been developed for
## AIS BC95
AIS BC95 PI Library, used on arduino, have been developed for
any platform. This library include API such as UDP.
### Example for use the AIS BC95 API
#### Call the AIS BC95 API library:
Expand Down
2 changes: 1 addition & 1 deletion library.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@
"type": "git",
"url": "https://github.com/AIS-DeviceInnovation/Magellan_BC95.git"
},
"version": "1.1.1",
"version": "1.1.2",
"platforms": "*"
}
5 changes: 2 additions & 3 deletions library.properties
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
name=Magellan_BC95
version=1.1.1
version=1.1.2
author=AIS IoT Alliance Program
maintainer= AIS IoT Alliance Program <aiap@ais.co.th>
sentence= AIS Magellan Library; easy way to integrate IoT Device to Magellan using Arduino Platform.
paragraph= Fully compatible with DEVIO NB-SHIELD I.
paragraph= Fully compatible with DEVIO NB-SHIELD I plus.
category=Cellular Communication
url= https://github.com/AIS-DeviceInnovation/Magellan_BC95
architectures=*
includes=AT_BC95.h,AltSoftSerial.h

40 changes: 20 additions & 20 deletions src/AIS_BC95_API.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,19 +27,19 @@ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AIS_BC95_API v1.1.1 NB-IoT.
AIS_BC95_API v1.1.2 NB-IoT.
support Quectel BC95
NB-IoT with AT command
Author: Device Innovation team
Create Date: 3 February 2020.
Modified: 18 February 2020.
Create Date: 8 February 2021.
Modified: 31 May 2021.
Released for private usage.
*/
#include "AIS_BC95_API.h"

AT_BC95 at_bc95;
AT_BC95 at_BC95;
void event_null(char *data){}

/****************************************/
Expand All @@ -52,12 +52,12 @@ AIS_BC95_API::AIS_BC95_API(){

void AIS_BC95_API:: begin(String addressI,String serverdesport){
Serial.println(F("----------------BEGIN----------------"));
at_bc95.debug = debug;
at_bc95.setupModule(addressI,serverdesport);
at_BC95.debug = debug;
at_BC95.setupModule(addressI,serverdesport);
}

void AIS_BC95_API::pingIP(String IP){
at_bc95.pingIP(IP);
at_BC95.pingIP(IP);
}

/****************************************/
Expand All @@ -79,7 +79,7 @@ void AIS_BC95_API::sendMsgSTR(String address,String desport,String payload){
int x_len = payload.length();
char buf[x_len+2];
payload.toCharArray(buf,x_len+1);
send_msg(address,desport,payload.length(),at_bc95.toHEX(buf));
send_msg(address,desport,payload.length(),at_BC95.toHEX(buf));
}
}

Expand All @@ -92,16 +92,16 @@ void AIS_BC95_API::send_msg(String address,String desport,unsigned int len,Strin
Serial.print(F("# Port : "));
Serial.println(desport);

at_bc95._Serial_print(address,desport,len);
at_bc95._Serial_print(payload);
at_bc95._Serial_println();
at_BC95._Serial_print(address,desport,len);
at_BC95._Serial_print(payload);
at_BC95._Serial_println();
}

/****************************************/
/** Receive UDP Message **/
/****************************************/
void AIS_BC95_API::waitResponse(String &retdata,String server){
at_bc95.waitResponse(retdata,server);
at_BC95.waitResponse(retdata,server);
}

/****************************************/
Expand All @@ -120,34 +120,34 @@ void AIS_BC95_API::waitResponse(String &retdata,String server){
- Get Device IMEI
*/
String AIS_BC95_API::getSignal(){
return at_bc95.getSignal();
return at_BC95.getSignal();
}

String AIS_BC95_API::getDeviceIP(){
return at_bc95.getDeviceIP();
return at_BC95.getDeviceIP();
}

String AIS_BC95_API::getIMSI(){
return at_bc95.getIMSI();
return at_BC95.getIMSI();
}

String AIS_BC95_API::getICCID(){
return at_bc95.getICCID();
return at_BC95.getICCID();
}

String AIS_BC95_API::getIMEI(){
return at_bc95.getIMEI();
return at_BC95.getIMEI();
}

radio AIS_BC95_API::getRadioStat(){
return at_bc95.getRadioStat();
return at_BC95.getRadioStat();
}

dateTime AIS_BC95_API::getClock(unsigned int timezone){
return at_bc95.getClock(timezone);
return at_BC95.getClock(timezone);
}

// bool AIS_BC95_API::checkPSMmode(){
// return at_bc95.checkPSMmode();
// return at_BC95.checkPSMmode();
// }

6 changes: 3 additions & 3 deletions src/AIS_BC95_API.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,13 @@ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AIS_BC95_API v1.0.0 NB-IoT.
AIS_BC95_API v1.1.2 NB-IoT.
support Quectel BC95
NB-IoT with AT command
Author: Device Innovation team
Create Date: 3 February 2020.
Modified: 22 July 2020.
Create Date: 8 February 2021.
Modified: 31 May 2021.
Released for private usage.
*/
Expand Down
71 changes: 41 additions & 30 deletions src/AT_BC95.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,13 @@ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AT Command Dictionary for Quectel BC95 version 1.0.2
AT Command Dictionary for Quectel BC95 version 1.1.2
support Quectel BC95
NB-IoT with AT command
Author: Device Innovation team
Create Date: 2 January 2020.
Modified: 18 February 2021.
Create Date: 8 February 2021.
Modified: 31 May 2021.
*/
#include "AT_BC95.h"
#include "board.h"
Expand Down Expand Up @@ -71,6 +71,8 @@ void AT_BC95::setupModule(String address,String port){
_Serial->println("AT+CMEE=1"); // set report error
_serial_flush();

delay(700);

Serial.print(F(">>IMSI : "));
Serial.println(getIMSI());

Expand All @@ -81,12 +83,7 @@ void AT_BC95::setupModule(String address,String port){
Serial.println(getIMEI());

if(debug)Serial.print(F(">>FW ver : "));
if(debug)Serial.println(getFirmwareVersion());

delay(500);
Serial.print(F(">>Signal : "));
Serial.print(getSignal());
Serial.println(F(" dBm"));
if(debug)Serial.println(getFirmwareVersion());

delay(800);
_serial_flush();
Expand All @@ -106,13 +103,13 @@ void AT_BC95::setupModule(String address,String port){
Serial.println(F("-------- Disconnected ---------"));
//reset
delay(200);
__asm__ __volatile__ ("jmp 0x0000");
reset();
}

if(debug){
Serial.print(F(">>APN : "));
Serial.println(getAPN());
}
delay(500);
Serial.print(F(">>Signal : "));
Serial.print(getSignal());
Serial.println(F(" dBm"));

previous=millis();
}
Expand Down Expand Up @@ -140,7 +137,7 @@ void AT_BC95::check_module_ready(){
if(count > 5) {
Serial.print(F("\nError to connect NB Module, rebooting..."));
delay(200);
__asm__ __volatile__ ("jmp 0x0000");
reset();
}

}
Expand Down Expand Up @@ -237,9 +234,10 @@ bool AT_BC95::setPhoneFunction(){
status=false;
break;
}
Serial.print(F("."));
//Serial.print(F("."));
}
}
data_input="";
return status;
}

Expand All @@ -260,8 +258,10 @@ void AT_BC95::connectNetwork(){
// Create a UDP socket and connect socket to remote address and port
bool AT_BC95::createUDPSocket(String address,String port){
bool status=false;

_Serial->print(F("AT+NSOCR=DGRAM,17,"));
_Serial->println(port+",1");

delay(500);
while(1){
if(_Serial->available()){
Expand All @@ -270,8 +270,8 @@ bool AT_BC95::createUDPSocket(String address,String port){
status=true;
break;
}else if(data_input.indexOf(F("+CME ERROR: 4"))!=-1){
_Serial->print(F("AT+NSOCR=DGRAM,17,"));
_Serial->println(port+",1");
_Serial->print(F("AT+NSOCR=DGRAM,17,"));
_Serial->println(port+",1");
}
Serial.print(F("."));
}
Expand Down Expand Up @@ -324,17 +324,16 @@ pingRESP AT_BC95::pingIP(String IP){
pingr.addr = data.substring(index+1,index2);
pingr.ttl = data.substring(index2+1,index3);
pingr.rtt = data.substring(index3+1,data.length()-1);
}else {
Serial.println(">>Ping Failed");
}
}else { Serial.println(">>Ping Failed");}

blankChk(pingr.addr);
blankChk(pingr.ttl);
blankChk(pingr.rtt);
if(data!="") Serial.println(">>Ping IP : "+pingr.addr + ", ttl= " + pingr.ttl + ", rtt= " + pingr.rtt);

_serial_flush();
data_input="";

return pingr;
return pingr;
}

/****************************************/
Expand All @@ -347,7 +346,13 @@ String AT_BC95::getIMSI(){
if(_Serial->available()){
data_input=_Serial->readStringUntil('\n');
if(data_input.indexOf(F("OK"))!=-1 && imsi.indexOf(F("52003"))!=-1) break;
else if(data_input.indexOf(F("ERROR"))!=-1) _Serial->println(F("AT+CIMI"));
else if(data_input.indexOf(F("ERROR: 524"))!=-1){
setPhoneFunction();
_Serial->println(F("AT+CIMI"));
}
else if(data_input.indexOf(F("ERROR: 4"))!=-1){
_Serial->println(F("AT+CIMI"));
}
else imsi+=data_input;
}
}
Expand Down Expand Up @@ -405,7 +410,7 @@ String AT_BC95::getDeviceIP(){
}
else if(data_input.indexOf(F("OK"))!=-1) break;
else if(data_input.indexOf(F("ERROR"))!=-1) {
deviceIP = "n/a";
deviceIP = "N/A";
break;
}
}
Expand Down Expand Up @@ -442,12 +447,14 @@ String AT_BC95::getSignal(){
rssi = data_csq.toInt();
rssi = (2*rssi)-113;
data_csq = String(rssi);

}
}
}
}
if(rssi==-113 || rssi==85)count++;
delay(1000);
data_input="";
}while(rssi==-113&&count<=10 || rssi==85&&count<=10);
if(rssi==-113 || rssi==85){
data_csq = "-113";
Expand Down Expand Up @@ -599,6 +606,7 @@ void AT_BC95::blankChk(String& val){
/****************************************/
// Send AT command to send UDP message
void AT_BC95::_Serial_print(String address,String port,unsigned int len){

_Serial->print(F("AT+NSOST=0"));
_Serial->print(F(","));
_Serial->print(address);
Expand All @@ -607,6 +615,7 @@ void AT_BC95::_Serial_print(String address,String port,unsigned int len){
_Serial->print(F(","));
_Serial->print(len);
_Serial->print(F(","));

}

// Send message type String
Expand All @@ -633,10 +642,10 @@ void AT_BC95::_Serial_println(){
/** Receive UDP Message **/
/****************************************/
// Receive incoming message
void AT_BC95:: waitResponse(String &retdata,String server){
void AT_BC95::waitResponse(String &retdata,String server){
unsigned long current=millis();
if((current-previous>=500) && !(_Serial->available())){
_Serial->println(F("AT+NSORF=0,512"));
_Serial->println(F("AT+NSORF=0,512"));
previous=current;
}

Expand All @@ -656,7 +665,6 @@ void AT_BC95:: waitResponse(String &retdata,String server){
if (end){
manageResponse(retdata,server);
end=false;
data_input=F("");
}

}
Expand Down Expand Up @@ -814,9 +822,12 @@ dateTime AT_BC95::getClock(unsigned int timezone){
dateTime.time.trim();
dateTime.date.trim();
}

blankChk(dateTime.time);
blankChk(dateTime.date);

return dateTime;
}

void AT_BC95::reset(){
delay(500);
__asm__ __volatile__ ("jmp 0x0000");
}
Loading

0 comments on commit 9f55dba

Please sign in to comment.