Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions system/src/system_network_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -557,6 +557,8 @@ class ManagedNetworkInterface : public NetworkInterface
WLAN_CONNECTING = 0;
WLAN_CONNECTED = 0;
WLAN_DHCP_PENDING = 0;
CLR_WLAN_WD();
LOG(INFO, "Clearing WLAN WD in disconnect()");

cloud_disconnect(true, false, CLOUD_DISCONNECT_REASON_NETWORK_DISCONNECT);
const auto diag = NetworkDiagnostics::instance();
Expand Down
14 changes: 14 additions & 0 deletions user/tests/wiring/cell_connect_after_off/application.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#include "application.h"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a README with prerequisites for running this test. AFAIK it's required to detach the antenna.

#include "unit-test/unit-test.h"

// make clean all TEST=wiring/no_fixture PLATFORM=electron -s COMPILE_LTO=n program-dfu DEBUG_BUILD=y
// make clean all TEST=wiring/no_fixture PLATFORM=electron -s COMPILE_LTO=n program-dfu DEBUG_BUILD=y USE_THREADING=y
//
// Serial1LogHandler logHandler(115200, LOG_LEVEL_ALL, {
// { "comm", LOG_LEVEL_NONE }, // filter out comm messages
// { "system", LOG_LEVEL_INFO } // only info level for system messages
// });

UNIT_TEST_APP();

SYSTEM_THREAD(ENABLED);
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/*
* Copyright (c) 2018 Particle Industries, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation, either
* version 3 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/

#include "application.h"
#include "unit-test/unit-test.h"

#if Wiring_Cellular == 1

// Global variable to indicate a connection attempt
volatile int g_state_conn_attempt = 0;

static void nwstatus_callback_handler(system_event_t ev, int param) {
if (param == network_status_connecting){
g_state_conn_attempt = 1;
}
}

test(CELLULAR_CONN_01_conn_after_off)
{
// Connect to Particle cloud
Particle.connect();
delay(30000);
// Power off the cell radio
Cellular.off();
delay(60000);
// Callback handler for network_status
System.on(network_status, nwstatus_callback_handler);
// clear g_state_conn_attempt just-in-case
g_state_conn_attempt = 0;
// Check that Particle.connect() attempts to work after the delay
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's just in case clear g_state_conn_attempt here.

Particle.connect();
// Wait sometime for Particle.connect() to try
delay(30000);
// Verify that a connection attempt has been made
assertEqual(g_state_conn_attempt, 1);
}

#endif // Wiring_Cellular == 1
5 changes: 5 additions & 0 deletions user/tests/wiring/cell_connect_after_off/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
The following illustrates the problem statement:
> Keep antenna disconnected for this test
1. With antenna disconnected, run `Particle.connect()`
2. Run `Cellular.off()`
3. After 60 sec, run `Particle.connect()` again, and verify that you see cellular AT traffic to turn on the modem or connect to the network.