Skip to content

Instantly share code, notes, and snippets.

@artyLee
Created June 2, 2021 05:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save artyLee/ad6a65daca37681910150569524e1d39 to your computer and use it in GitHub Desktop.
Save artyLee/ad6a65daca37681910150569524e1d39 to your computer and use it in GitHub Desktop.
diff --git a/hal/network/ncp_client/quectel/quectel_ncp_client.cpp b/hal/network/ncp_client/quectel/quectel_ncp_client.cpp
index 5d00e50eb..51b8aec6a 100644
--- a/hal/network/ncp_client/quectel/quectel_ncp_client.cpp
+++ b/hal/network/ncp_client/quectel/quectel_ncp_client.cpp
@@ -630,8 +630,8 @@ int QuectelNcpClient::getCellularGlobalIdentity(CellularGlobalIdentity* cgi) {
// Fill in LAC and Cell ID based on current RAT, prefer PSD and EPS
// fallback to CSD
CHECK_PARSER_OK(parser_.execCommand("AT+CEREG?"));
- CHECK_PARSER_OK(parser_.execCommand("AT+CGREG?"));
- CHECK_PARSER_OK(parser_.execCommand("AT+CREG?"));
+ // CHECK_PARSER_OK(parser_.execCommand("AT+CGREG?"));
+ // CHECK_PARSER_OK(parser_.execCommand("AT+CREG?"));
switch (cgi->version)
{
@@ -1003,7 +1003,7 @@ int QuectelNcpClient::initReady(ModemState state) {
// int r = CHECK_PARSER(parser_.execCommand("AT+COPS=2"));
// CHECK_TRUE(r == AtResponse::OK, SYSTEM_ERROR_UNKNOWN);
- if (ncpId() == PLATFORM_NCP_QUECTEL_BG96) {
+ if (ncpId() == PLATFORM_NCP_QUECTEL_BG96 || ncpId() == PLATFORM_NCP_QUECTEL_BG77) {
// Force eDRX mode to be disabled.
CHECK_PARSER(parser_.execCommand("AT+CEDRXS=0"));
@@ -1215,10 +1215,10 @@ int QuectelNcpClient::registerNet() {
resetRegistrationState();
// Register GPRS, LET, NB-IOT network
- r = CHECK_PARSER(parser_.execCommand("AT+CREG=2"));
- CHECK_TRUE(r == AtResponse::OK, SYSTEM_ERROR_UNKNOWN);
- r = CHECK_PARSER(parser_.execCommand("AT+CGREG=2"));
- CHECK_TRUE(r == AtResponse::OK, SYSTEM_ERROR_UNKNOWN);
+ // r = CHECK_PARSER(parser_.execCommand("AT+CREG=2"));
+ // CHECK_TRUE(r == AtResponse::OK, SYSTEM_ERROR_UNKNOWN);
+ // r = CHECK_PARSER(parser_.execCommand("AT+CGREG=2"));
+ // CHECK_TRUE(r == AtResponse::OK, SYSTEM_ERROR_UNKNOWN);
r = CHECK_PARSER(parser_.execCommand("AT+CEREG=2"));
CHECK_TRUE(r == AtResponse::OK, SYSTEM_ERROR_UNKNOWN);
@@ -1239,7 +1239,7 @@ int QuectelNcpClient::registerNet() {
// CHECK_TRUE(r == AtResponse::OK, SYSTEM_ERROR_UNKNOWN);
}
- if (ncpId() == PLATFORM_NCP_QUECTEL_BG96) {
+ if (ncpId() == PLATFORM_NCP_QUECTEL_BG96 || ncpId() == PLATFORM_NCP_QUECTEL_BG77) {
// FIXME: Force Cat M1-only mode, do we need to do it on Quectel NCP?
// Set to scan LTE only if not already set, take effect immediately
auto respNwMode = parser_.sendCommand("AT+QCFG=\"nwscanmode\"");
@@ -1265,8 +1265,8 @@ int QuectelNcpClient::registerNet() {
}
}
- CHECK_PARSER_OK(parser_.execCommand("AT+CREG?"));
- CHECK_PARSER_OK(parser_.execCommand("AT+CGREG?"));
+ // CHECK_PARSER_OK(parser_.execCommand("AT+CREG?"));
+ // CHECK_PARSER_OK(parser_.execCommand("AT+CGREG?"));
CHECK_PARSER_OK(parser_.execCommand("AT+CEREG?"));
regStartTime_ = millis();
@@ -1506,7 +1506,7 @@ int QuectelNcpClient::interveneRegistration() {
auto timeout = (registrationInterventions_ + 1) * REGISTRATION_INTERVENTION_TIMEOUT;
// Intervention to speed up registration or recover in case of failure
- if (ncpId() != PLATFORM_NCP_QUECTEL_BG96) {
+ if (ncpId() != PLATFORM_NCP_QUECTEL_BG96 || ncpId() == PLATFORM_NCP_QUECTEL_BG77) {
if (eps_.sticky() && eps_.duration() >= timeout) {
if (eps_.status() == CellularRegistrationStatus::NOT_REGISTERING && csd_.status() == eps_.status()) {
LOG(TRACE, "Sticky not registering state for %lu s, PLMN reselection", eps_.duration() / 1000);
@@ -1601,8 +1601,8 @@ int QuectelNcpClient::processEventsImpl() {
// Check GPRS, LET, NB-IOT network registration status
CHECK_PARSER(parser_.execCommand("AT+CEER"));
- CHECK_PARSER_OK(parser_.execCommand("AT+CREG?"));
- CHECK_PARSER_OK(parser_.execCommand("AT+CGREG?"));
+ // CHECK_PARSER_OK(parser_.execCommand("AT+CREG?"));
+ // CHECK_PARSER_OK(parser_.execCommand("AT+CGREG?"));
CHECK_PARSER_OK(parser_.execCommand("AT+CEREG?"));
if (connState_ == NcpConnectionState::CONNECTING && millis() - regStartTime_ >= registrationTimeout_) {
diff --git a/hal/shared/platform_ncp.h b/hal/shared/platform_ncp.h
index 192e03fed..1bf1b0a60 100644
--- a/hal/shared/platform_ncp.h
+++ b/hal/shared/platform_ncp.h
@@ -45,6 +45,7 @@ enum PlatformNCPIdentifier {
PLATFORM_NCP_QUECTEL_EG91_E = PLATFORM_NCP_IDENTIFIER(PLATFORM_NCP_MANUFACTURER_QUECTEL, 2),
PLATFORM_NCP_QUECTEL_EG91_NA = PLATFORM_NCP_IDENTIFIER(PLATFORM_NCP_MANUFACTURER_QUECTEL, 3),
PLATFORM_NCP_QUECTEL_EG91_EX = PLATFORM_NCP_IDENTIFIER(PLATFORM_NCP_MANUFACTURER_QUECTEL, 4),
+ PLATFORM_NCP_QUECTEL_BG77 = PLATFORM_NCP_IDENTIFIER(PLATFORM_NCP_MANUFACTURER_QUECTEL, 6),
PLATFORM_NCP_BROADCOM_BCM9WCDUSI09 = PLATFORM_NCP_IDENTIFIER(PLATFORM_NCP_MANUFACTURER_BROADCOM, 1),
PLATFORM_NCP_BROADCOM_BCM9WCDUSI14 = PLATFORM_NCP_IDENTIFIER(PLATFORM_NCP_MANUFACTURER_BROADCOM, 2)
};
diff --git a/hal/network/ncp_client/quectel/quectel_ncp_client.cpp b/hal/network/ncp_client/quectel/quectel_ncp_client.cpp
index 5d00e50eb..51b8aec6a 100644
--- a/hal/network/ncp_client/quectel/quectel_ncp_client.cpp
+++ b/hal/network/ncp_client/quectel/quectel_ncp_client.cpp
@@ -630,8 +630,8 @@ int QuectelNcpClient::getCellularGlobalIdentity(CellularGlobalIdentity* cgi) {
// Fill in LAC and Cell ID based on current RAT, prefer PSD and EPS
// fallback to CSD
CHECK_PARSER_OK(parser_.execCommand("AT+CEREG?"));
- CHECK_PARSER_OK(parser_.execCommand("AT+CGREG?"));
- CHECK_PARSER_OK(parser_.execCommand("AT+CREG?"));
+ // CHECK_PARSER_OK(parser_.execCommand("AT+CGREG?"));
+ // CHECK_PARSER_OK(parser_.execCommand("AT+CREG?"));
switch (cgi->version)
{
@@ -1003,7 +1003,7 @@ int QuectelNcpClient::initReady(ModemState state) {
// int r = CHECK_PARSER(parser_.execCommand("AT+COPS=2"));
// CHECK_TRUE(r == AtResponse::OK, SYSTEM_ERROR_UNKNOWN);
- if (ncpId() == PLATFORM_NCP_QUECTEL_BG96) {
+ if (ncpId() == PLATFORM_NCP_QUECTEL_BG96 || ncpId() == PLATFORM_NCP_QUECTEL_BG77) {
// Force eDRX mode to be disabled.
CHECK_PARSER(parser_.execCommand("AT+CEDRXS=0"));
@@ -1215,10 +1215,10 @@ int QuectelNcpClient::registerNet() {
resetRegistrationState();
// Register GPRS, LET, NB-IOT network
- r = CHECK_PARSER(parser_.execCommand("AT+CREG=2"));
- CHECK_TRUE(r == AtResponse::OK, SYSTEM_ERROR_UNKNOWN);
- r = CHECK_PARSER(parser_.execCommand("AT+CGREG=2"));
- CHECK_TRUE(r == AtResponse::OK, SYSTEM_ERROR_UNKNOWN);
+ // r = CHECK_PARSER(parser_.execCommand("AT+CREG=2"));
+ // CHECK_TRUE(r == AtResponse::OK, SYSTEM_ERROR_UNKNOWN);
+ // r = CHECK_PARSER(parser_.execCommand("AT+CGREG=2"));
+ // CHECK_TRUE(r == AtResponse::OK, SYSTEM_ERROR_UNKNOWN);
r = CHECK_PARSER(parser_.execCommand("AT+CEREG=2"));
CHECK_TRUE(r == AtResponse::OK, SYSTEM_ERROR_UNKNOWN);
@@ -1239,7 +1239,7 @@ int QuectelNcpClient::registerNet() {
// CHECK_TRUE(r == AtResponse::OK, SYSTEM_ERROR_UNKNOWN);
}
- if (ncpId() == PLATFORM_NCP_QUECTEL_BG96) {
+ if (ncpId() == PLATFORM_NCP_QUECTEL_BG96 || ncpId() == PLATFORM_NCP_QUECTEL_BG77) {
// FIXME: Force Cat M1-only mode, do we need to do it on Quectel NCP?
// Set to scan LTE only if not already set, take effect immediately
auto respNwMode = parser_.sendCommand("AT+QCFG=\"nwscanmode\"");
@@ -1265,8 +1265,8 @@ int QuectelNcpClient::registerNet() {
}
}
- CHECK_PARSER_OK(parser_.execCommand("AT+CREG?"));
- CHECK_PARSER_OK(parser_.execCommand("AT+CGREG?"));
+ // CHECK_PARSER_OK(parser_.execCommand("AT+CREG?"));
+ // CHECK_PARSER_OK(parser_.execCommand("AT+CGREG?"));
CHECK_PARSER_OK(parser_.execCommand("AT+CEREG?"));
regStartTime_ = millis();
@@ -1506,7 +1506,7 @@ int QuectelNcpClient::interveneRegistration() {
auto timeout = (registrationInterventions_ + 1) * REGISTRATION_INTERVENTION_TIMEOUT;
// Intervention to speed up registration or recover in case of failure
- if (ncpId() != PLATFORM_NCP_QUECTEL_BG96) {
+ if (ncpId() != PLATFORM_NCP_QUECTEL_BG96 || ncpId() == PLATFORM_NCP_QUECTEL_BG77) {
if (eps_.sticky() && eps_.duration() >= timeout) {
if (eps_.status() == CellularRegistrationStatus::NOT_REGISTERING && csd_.status() == eps_.status()) {
LOG(TRACE, "Sticky not registering state for %lu s, PLMN reselection", eps_.duration() / 1000);
@@ -1601,8 +1601,8 @@ int QuectelNcpClient::processEventsImpl() {
// Check GPRS, LET, NB-IOT network registration status
CHECK_PARSER(parser_.execCommand("AT+CEER"));
- CHECK_PARSER_OK(parser_.execCommand("AT+CREG?"));
- CHECK_PARSER_OK(parser_.execCommand("AT+CGREG?"));
+ // CHECK_PARSER_OK(parser_.execCommand("AT+CREG?"));
+ // CHECK_PARSER_OK(parser_.execCommand("AT+CGREG?"));
CHECK_PARSER_OK(parser_.execCommand("AT+CEREG?"));
if (connState_ == NcpConnectionState::CONNECTING && millis() - regStartTime_ >= registrationTimeout_) {
diff --git a/hal/shared/platform_ncp.h b/hal/shared/platform_ncp.h
index 192e03fed..1bf1b0a60 100644
--- a/hal/shared/platform_ncp.h
+++ b/hal/shared/platform_ncp.h
@@ -45,6 +45,7 @@ enum PlatformNCPIdentifier {
PLATFORM_NCP_QUECTEL_EG91_E = PLATFORM_NCP_IDENTIFIER(PLATFORM_NCP_MANUFACTURER_QUECTEL, 2),
PLATFORM_NCP_QUECTEL_EG91_NA = PLATFORM_NCP_IDENTIFIER(PLATFORM_NCP_MANUFACTURER_QUECTEL, 3),
PLATFORM_NCP_QUECTEL_EG91_EX = PLATFORM_NCP_IDENTIFIER(PLATFORM_NCP_MANUFACTURER_QUECTEL, 4),
+ PLATFORM_NCP_QUECTEL_BG77 = PLATFORM_NCP_IDENTIFIER(PLATFORM_NCP_MANUFACTURER_QUECTEL, 6),
PLATFORM_NCP_BROADCOM_BCM9WCDUSI09 = PLATFORM_NCP_IDENTIFIER(PLATFORM_NCP_MANUFACTURER_BROADCOM, 1),
PLATFORM_NCP_BROADCOM_BCM9WCDUSI14 = PLATFORM_NCP_IDENTIFIER(PLATFORM_NCP_MANUFACTURER_BROADCOM, 2)
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment