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

tests/pkg/minmea: fixing RMC timestamp #20018

Merged
merged 1 commit into from
Oct 27, 2023

Conversation

jan-mo
Copy link
Contributor

@jan-mo jan-mo commented Oct 26, 2023

The RMC timestamp calculation was creating issues. The timestamp will be related to the EPOCH and time zone. Test on native will fail if the time zone is not set correctly. (see #20005)

how to test

TZ=GMT-1 make test

and

TZ=GMT make test

and

TZ=<any> make test

timedatectl list-timezones provides you with a List of timzones

do not fail

@github-actions github-actions bot added the Area: tests Area: tests and testing framework label Oct 26, 2023
@kfessel
Copy link
Contributor

kfessel commented Oct 26, 2023

the test should test message decoding not timezone handling (we might want to have another test for that and fix the underling issue)

Comment on lines 113 to 114
timestamp = mktime(&tm);
/* timestamp is dependent on given EPOCH time */
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
timestamp = mktime(&tm);
/* timestamp is dependent on given EPOCH time */
timestamp = mktime(&tm);
/* minmea is providing a UTC date time (decoded from the GPS Message)
mktime() assumes local time, the timestamp might therefor depend on EPOCH and timezone*/

Copy link
Contributor

Choose a reason for hiding this comment

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

kwark we should just use timegm()

Suggested change
timestamp = mktime(&tm);
/* timestamp is dependent on given EPOCH time */
timestamp = timegm(&tm);

Copy link
Contributor

Choose a reason for hiding this comment

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

timegm might not be supported by all libc

Copy link
Contributor

Choose a reason for hiding this comment

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

or we fix native #20023

Copy link
Contributor Author

Choose a reason for hiding this comment

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

timegm is not supported by the MCUs. I just remove the timestamp generation and we are just checking the raw time values here. The only function that is not checked here is minmea_getdatetime().

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The minmea_getdatetime() does just fill the struct tm, so there should be no problem if we exclude that. see

There is also the minmea_gettime() this also uses timegm() but I think we can only test that on native. see

tests/pkg/minmea/main.c Outdated Show resolved Hide resolved
@jan-mo jan-mo force-pushed the fix/20231026__NMEA_RMC_date_time branch from d6c18cb to 0f27efb Compare October 27, 2023 07:44
@benpicco benpicco added the CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR label Oct 27, 2023
@riot-ci
Copy link

riot-ci commented Oct 27, 2023

Murdock results

✔️ PASSED

0f27efb tests/pkg/minmea: fixing RMC timestamp

Success Failures Total Runtime
17 0 17 01m:16s

Artifacts

@benpicco
Copy link
Contributor

bors merge

bors bot added a commit that referenced this pull request Oct 27, 2023
19932: tests/periph: Add test using the Peripheral Selftest Shield r=benpicco a=maribu

### Contribution description

This adds a test that makes use of the peripheral selftesting shield.

#### ToDo

- [x] Add doc

### Testing procedure

- grab an Arduino UNO compatible board that has the Arduino pin map feature
- connect it to the testing shield
- configure the testing shield
    - make sure the VCC selector matches the logic level of the board (3.3V and 5V are the only options)
    - enabled all the "loops" needed for testing on SW1
    - it could be that the UART on D0, D1 is used for stdio. In that case, do *NOT* close the loop
- flash and run the test application

### Issues/PRs references

none

20018: tests/pkg/minmea: fixing RMC timestamp r=benpicco a=jan-mo

The RMC timestamp calculation was creating issues. The timestamp will be related to the EPOCH and time zone. Test on native will fail if the time zone is not set correctly. (see #20005)

# how to test

```
TZ=GMT-1 make test
```
 and 
```
TZ=GMT make test
```
and 
```
TZ=<any> make test
```

`timedatectl  list-timezones` provides you with a List of timzones 

do not fail 

20022: pkg/lwip: add support for slipdev r=benpicco a=benpicco



20025: tests/drivers/at: fix device table overflow r=benpicco a=krzysztof-cabaj

### Contribution description

This PR fix device table overflow in `tests/driver/at`, which could lead to device crash.

### Testing procedure

PR was tested on two nucleo boards with 2 and 3 UARTs (nucleo-l476rg and nucleo-l496zg).
Flash `tests/driver/at` with and without this PR.

Output with this PR:

```
> main(): This is RIOT! (Version: 2022.07-devel-5083-g2b9e8-tests-drivers-at)
AT command test app
> init 5 9600

Wrong UART device number - should by in range 0-2.
>
```

Output without this PR:

```
> main(): This is RIOT! (Version: 2022.07-devel-5083-g2b9e8)
AT command test app
> init 5 9600

8001afd
*** RIOT kernel panic:
FAILED ASSERTION.

*** halted.


Context before hardfault:
   r0: 0x0000000a
   r1: 0x00000000
   . . . 
```

### Issues/PRs references

None

Co-authored-by: Marian Buschsieweke <marian.buschsieweke@posteo.net>
Co-authored-by: Jan Mohr <jan.mohr@ml-pa.com>
Co-authored-by: Benjamin Valentin <benjamin.valentin@ml-pa.com>
Co-authored-by: krzysztof-cabaj <kcabaj@gmail.com>
@bors
Copy link
Contributor

bors bot commented Oct 27, 2023

Build failed (retrying...):

bors bot added a commit that referenced this pull request Oct 27, 2023
19932: tests/periph: Add test using the Peripheral Selftest Shield r=benpicco a=maribu

### Contribution description

This adds a test that makes use of the peripheral selftesting shield.

#### ToDo

- [x] Add doc

### Testing procedure

- grab an Arduino UNO compatible board that has the Arduino pin map feature
- connect it to the testing shield
- configure the testing shield
    - make sure the VCC selector matches the logic level of the board (3.3V and 5V are the only options)
    - enabled all the "loops" needed for testing on SW1
    - it could be that the UART on D0, D1 is used for stdio. In that case, do *NOT* close the loop
- flash and run the test application

### Issues/PRs references

none

20018: tests/pkg/minmea: fixing RMC timestamp r=benpicco a=jan-mo

The RMC timestamp calculation was creating issues. The timestamp will be related to the EPOCH and time zone. Test on native will fail if the time zone is not set correctly. (see #20005)

# how to test

```
TZ=GMT-1 make test
```
 and 
```
TZ=GMT make test
```
and 
```
TZ=<any> make test
```

`timedatectl  list-timezones` provides you with a List of timzones 

do not fail 

Co-authored-by: Marian Buschsieweke <marian.buschsieweke@posteo.net>
Co-authored-by: Jan Mohr <jan.mohr@ml-pa.com>
@bors
Copy link
Contributor

bors bot commented Oct 27, 2023

This PR was included in a batch that was canceled, it will be automatically retried

@bors
Copy link
Contributor

bors bot commented Oct 27, 2023

Build succeeded!

The publicly hosted instance of bors-ng is deprecated and will go away soon.

If you want to self-host your own instance, instructions are here.
For more help, visit the forum.

If you want to switch to GitHub's built-in merge queue, visit their help page.

@bors bors bot merged commit 47f0446 into RIOT-OS:master Oct 27, 2023
27 checks passed
@MrKevinWeiss MrKevinWeiss added this to the Release 2024.01 milestone Feb 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: tests Area: tests and testing framework CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants