Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update hil.yml #12

Closed
wants to merge 7 commits into from
Closed
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
1 change: 0 additions & 1 deletion .github/workflows/hil.yml
Original file line number Diff line number Diff line change
Expand Up @@ -170,4 +170,3 @@ jobs:
with:
name: Event File
path: ${{github.event_path}}

5 changes: 1 addition & 4 deletions tests/gpio/gpio.ino
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,13 @@ void test_button()
}
delay(10);
}
TEST_ASSERT_EQUAL(3, count);
}

void setup()
{
Serial.begin(115200);
UNITY_BEGIN();
pinMode(BTN, INPUT_PULLUP);
RUN_TEST(test_button);
UNITY_END();
test_button();
}

void loop()
Expand Down
3 changes: 2 additions & 1 deletion tests/gpio/scenario.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@ author: Jan Prochazka (jan.prochazka@espressif.com)
steps:
- wait-serial: 'Button test'

# Delay 1s (to make sure the test is ready to start)
# Need for 1s delay for scenario to run properly
- delay: 1000ms

# Press once
- set-control:
part-id: btn1
Expand Down
5 changes: 4 additions & 1 deletion tests/gpio/test_gpio.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
def test_gpio(dut):
dut.expect_unity_test_output(timeout=240)
dut.expect("Button test")
dut.expect("Button pressed 1 times")
dut.expect("Button pressed 2 times")
dut.expect("Button pressed 3 times")
Empty file added tests/wifi/.skip.esp32h2
Empty file.
Empty file added tests/wifi/.skip.qemu
Empty file.
3 changes: 2 additions & 1 deletion tests/wifi/test_wifi.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
def test_wifi(dut):
dut.expect_unity_test_output(timeout=240)
dut.expect_exact("WiFi connected")
dut.expect_exact("IP address:")
228 changes: 110 additions & 118 deletions tests/wifi/wifi.ino
Original file line number Diff line number Diff line change
@@ -1,132 +1,124 @@
/* HW Timer test */
#include <unity.h>

#define TIMER_FREQUENCY 4000000
#define TIMER_FREQUENCY_XTAL_CLK 1000

/*
* ESP32 - APB clk only (1kHz not possible)
* C3 - APB + XTAL clk
* S2 - APB + XTAL clk
* S3 - APB + XTAL clk
*/

static hw_timer_t *timer = NULL;
static volatile bool alarm_flag;
* This sketch shows the WiFi event usage
*
*/

/* setUp / tearDown functions are intended to be called before / after each test. */
void setUp(void) {
timer = timerBegin(TIMER_FREQUENCY);
if (timer == NULL) {
TEST_FAIL_MESSAGE("Timer init failed in setUp()");
/*
* WiFi Events

0 ARDUINO_EVENT_WIFI_READY < ESP32 WiFi ready
1 ARDUINO_EVENT_WIFI_SCAN_DONE < ESP32 finish scanning AP
2 ARDUINO_EVENT_WIFI_STA_START < ESP32 station start
3 ARDUINO_EVENT_WIFI_STA_STOP < ESP32 station stop
4 ARDUINO_EVENT_WIFI_STA_CONNECTED < ESP32 station connected to AP
5 ARDUINO_EVENT_WIFI_STA_DISCONNECTED < ESP32 station disconnected from AP
6 ARDUINO_EVENT_WIFI_STA_AUTHMODE_CHANGE < the auth mode of AP connected by ESP32 station changed
7 ARDUINO_EVENT_WIFI_STA_GOT_IP < ESP32 station got IP from connected AP
8 ARDUINO_EVENT_WIFI_STA_LOST_IP < ESP32 station lost IP and the IP is reset to 0
9 ARDUINO_EVENT_WPS_ER_SUCCESS < ESP32 station wps succeeds in enrollee mode
10 ARDUINO_EVENT_WPS_ER_FAILED < ESP32 station wps fails in enrollee mode
11 ARDUINO_EVENT_WPS_ER_TIMEOUT < ESP32 station wps timeout in enrollee mode
12 ARDUINO_EVENT_WPS_ER_PIN < ESP32 station wps pin code in enrollee mode
13 ARDUINO_EVENT_WIFI_AP_START < ESP32 soft-AP start
14 ARDUINO_EVENT_WIFI_AP_STOP < ESP32 soft-AP stop
15 ARDUINO_EVENT_WIFI_AP_STACONNECTED < a station connected to ESP32 soft-AP
16 ARDUINO_EVENT_WIFI_AP_STADISCONNECTED < a station disconnected from ESP32 soft-AP
17 ARDUINO_EVENT_WIFI_AP_STAIPASSIGNED < ESP32 soft-AP assign an IP to a connected station
18 ARDUINO_EVENT_WIFI_AP_PROBEREQRECVED < Receive probe request packet in soft-AP interface
19 ARDUINO_EVENT_WIFI_AP_GOT_IP6 < ESP32 ap interface v6IP addr is preferred
19 ARDUINO_EVENT_WIFI_STA_GOT_IP6 < ESP32 station interface v6IP addr is preferred
20 ARDUINO_EVENT_ETH_START < ESP32 ethernet start
21 ARDUINO_EVENT_ETH_STOP < ESP32 ethernet stop
22 ARDUINO_EVENT_ETH_CONNECTED < ESP32 ethernet phy link up
23 ARDUINO_EVENT_ETH_DISCONNECTED < ESP32 ethernet phy link down
24 ARDUINO_EVENT_ETH_GOT_IP < ESP32 ethernet got IP from connected AP
19 ARDUINO_EVENT_ETH_GOT_IP6 < ESP32 ethernet interface v6IP addr is preferred
25 ARDUINO_EVENT_MAX
*/

#include <WiFi.h>

const char *ssid = "Wokwi-GUEST";
const char *password = "";

// WARNING: This function is called from a separate FreeRTOS task (thread)!
void WiFiEvent(WiFiEvent_t event) {
Serial.printf("[WiFi-event] event: %d\n", event);

switch (event) {
case ARDUINO_EVENT_WIFI_READY: Serial.println("WiFi interface ready"); break;
case ARDUINO_EVENT_WIFI_SCAN_DONE: Serial.println("Completed scan for access points"); break;
case ARDUINO_EVENT_WIFI_STA_START: Serial.println("WiFi client started"); break;
case ARDUINO_EVENT_WIFI_STA_STOP: Serial.println("WiFi clients stopped"); break;
case ARDUINO_EVENT_WIFI_STA_CONNECTED: Serial.println("Connected to access point"); break;
case ARDUINO_EVENT_WIFI_STA_DISCONNECTED: Serial.println("Disconnected from WiFi access point"); break;
case ARDUINO_EVENT_WIFI_STA_AUTHMODE_CHANGE: Serial.println("Authentication mode of access point has changed"); break;
case ARDUINO_EVENT_WIFI_STA_GOT_IP:
Serial.print("Obtained IP address: ");
Serial.println(WiFi.localIP());
break;
case ARDUINO_EVENT_WIFI_STA_LOST_IP: Serial.println("Lost IP address and IP address is reset to 0"); break;
case ARDUINO_EVENT_WPS_ER_SUCCESS: Serial.println("WiFi Protected Setup (WPS): succeeded in enrollee mode"); break;
case ARDUINO_EVENT_WPS_ER_FAILED: Serial.println("WiFi Protected Setup (WPS): failed in enrollee mode"); break;
case ARDUINO_EVENT_WPS_ER_TIMEOUT: Serial.println("WiFi Protected Setup (WPS): timeout in enrollee mode"); break;
case ARDUINO_EVENT_WPS_ER_PIN: Serial.println("WiFi Protected Setup (WPS): pin code in enrollee mode"); break;
case ARDUINO_EVENT_WIFI_AP_START: Serial.println("WiFi access point started"); break;
case ARDUINO_EVENT_WIFI_AP_STOP: Serial.println("WiFi access point stopped"); break;
case ARDUINO_EVENT_WIFI_AP_STACONNECTED: Serial.println("Client connected"); break;
case ARDUINO_EVENT_WIFI_AP_STADISCONNECTED: Serial.println("Client disconnected"); break;
case ARDUINO_EVENT_WIFI_AP_STAIPASSIGNED: Serial.println("Assigned IP address to client"); break;
case ARDUINO_EVENT_WIFI_AP_PROBEREQRECVED: Serial.println("Received probe request"); break;
case ARDUINO_EVENT_WIFI_AP_GOT_IP6: Serial.println("AP IPv6 is preferred"); break;
case ARDUINO_EVENT_WIFI_STA_GOT_IP6: Serial.println("STA IPv6 is preferred"); break;
case ARDUINO_EVENT_ETH_GOT_IP6: Serial.println("Ethernet IPv6 is preferred"); break;
case ARDUINO_EVENT_ETH_START: Serial.println("Ethernet started"); break;
case ARDUINO_EVENT_ETH_STOP: Serial.println("Ethernet stopped"); break;
case ARDUINO_EVENT_ETH_CONNECTED: Serial.println("Ethernet connected"); break;
case ARDUINO_EVENT_ETH_DISCONNECTED: Serial.println("Ethernet disconnected"); break;
case ARDUINO_EVENT_ETH_GOT_IP: Serial.println("Obtained IP address"); break;
default: break;
}
timerStop(timer);
timerRestart(timer);
}

void tearDown(void) {
timerEnd(timer);
}

void ARDUINO_ISR_ATTR onTimer() {
alarm_flag = true;
}

void timer_interrupt_test(void) {

alarm_flag = false;
timerAttachInterrupt(timer, &onTimer);
timerAlarm(timer, (1.2 * TIMER_FREQUENCY), true, 0);
timerStart(timer);

delay(2000);

TEST_ASSERT_EQUAL(true, alarm_flag);

timerStop(timer);
timerRestart(timer);
alarm_flag = false;
timerDetachInterrupt(timer);
timerStart(timer);

delay(2000);
TEST_ASSERT_EQUAL(false, alarm_flag);
// WARNING: This function is called from a separate FreeRTOS task (thread)!
void WiFiGotIP(WiFiEvent_t event, WiFiEventInfo_t info) {
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(IPAddress(info.got_ip.ip_info.ip.addr));
}

void timer_divider_test(void) {

uint64_t time_val;
uint64_t comp_time_val;

timerStart(timer);

delay(1000);
time_val = timerRead(timer);

// compare divider 16 and 8, value should be double
timerEnd(timer);

timer = timerBegin(2 * TIMER_FREQUENCY);
if (timer == NULL) {
TEST_FAIL_MESSAGE("Timer init failed!");
}
timerRestart(timer);
delay(1000);
comp_time_val = timerRead(timer);

TEST_ASSERT_INT_WITHIN(4000, 4000000, time_val);
TEST_ASSERT_INT_WITHIN(8000, 8000000, comp_time_val);
void setup() {
Serial.begin(115200);

// divider is 256, value should be 2^4
timerEnd(timer);
// delete old config
WiFi.disconnect(true);

timer = timerBegin(TIMER_FREQUENCY / 16);
if (timer == NULL) {
TEST_FAIL_MESSAGE("Timer init failed!");
}
timerRestart(timer);
delay(1000);
comp_time_val = timerRead(timer);

TEST_ASSERT_INT_WITHIN(4000, 4000000, time_val);
TEST_ASSERT_INT_WITHIN(2500, 250000, comp_time_val);
}

void timer_read_test(void) {

uint64_t set_timer_val = 0xFF;
uint64_t get_timer_val = 0;

timerWrite(timer, set_timer_val);
get_timer_val = timerRead(timer);

TEST_ASSERT_EQUAL(set_timer_val, get_timer_val);
// Examples of different ways to register wifi events;
// these handlers will be called from another thread.
WiFi.onEvent(WiFiEvent);
WiFi.onEvent(WiFiGotIP, WiFiEvent_t::ARDUINO_EVENT_WIFI_STA_GOT_IP);
WiFiEventId_t eventID = WiFi.onEvent(
[](WiFiEvent_t event, WiFiEventInfo_t info) {
Serial.print("WiFi lost connection. Reason: ");
Serial.println(info.wifi_sta_disconnected.reason);
},
WiFiEvent_t::ARDUINO_EVENT_WIFI_STA_DISCONNECTED
);

// Remove WiFi event
Serial.print("WiFi Event ID: ");
Serial.println(eventID);
// WiFi.removeEvent(eventID);

WiFi.begin(ssid, password);

Serial.println();
Serial.println();
Serial.println("Wait for WiFi... ");
}

void timer_clock_select_test(void) {
// Set timer frequency that can be achieved using XTAL clock source (autoselected)
timer = timerBegin(TIMER_FREQUENCY_XTAL_CLK);

uint32_t resolution = timerGetFrequency(timer);
TEST_ASSERT_EQUAL(TIMER_FREQUENCY_XTAL_CLK, resolution);
}

void setup() {

// Open serial communications and wait for port to open:
Serial.begin(115200);
while (!Serial) {
;
}

UNITY_BEGIN();
RUN_TEST(timer_read_test);
RUN_TEST(timer_interrupt_test);
RUN_TEST(timer_divider_test);
#if !CONFIG_IDF_TARGET_ESP32
RUN_TEST(timer_clock_select_test);
#endif
UNITY_END();
void loop() {
delay(1000);
}

void loop() {}
Loading