Skip to content

Commit 0d3b777

Browse files
authored
Merge pull request #7378 from DavePutz/issue_7325
Issue 7352 - set max value of a pulsein
2 parents 88d0eba + 94dbefa commit 0d3b777

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

ports/espressif/common-hal/pulseio/PulseIn.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,12 @@ STATIC void update_internal_buffer(pulseio_pulsein_obj_t *self) {
4141
length /= 4;
4242
for (size_t i = 0; i < length; i++) {
4343
uint16_t pos = (self->start + self->len) % self->maxlen;
44-
self->buffer[pos] = items[i].duration0 * 3;
44+
uint32_t val = items[i].duration0 * 3;
45+
// make sure the value returned does not exceed the max uint16 value.
46+
if (val > 65535) {
47+
val = 65535;
48+
}
49+
self->buffer[pos] = (uint16_t)val;
4550
if (self->len < self->maxlen) {
4651
self->len++;
4752
} else {
@@ -50,7 +55,11 @@ STATIC void update_internal_buffer(pulseio_pulsein_obj_t *self) {
5055
// Check if second item exists
5156
if (items[i].duration1) {
5257
pos = (self->start + self->len) % self->maxlen;
53-
self->buffer[pos] = items[i].duration1 * 3;
58+
val = items[i].duration1 * 3;
59+
if (val > 65535) {
60+
val = 65535;
61+
}
62+
self->buffer[pos] = (uint16_t)val;
5463
if (self->len < self->maxlen) {
5564
self->len++;
5665
} else {

0 commit comments

Comments
 (0)