Skip to content

Commit e63a327

Browse files
committed
Bound PulseIn start indexes to maxlen.
1 parent 862188d commit e63a327

File tree

5 files changed

+13
-13
lines changed

5 files changed

+13
-13
lines changed

ports/atmel-samd/common-hal/pulseio/PulseIn.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ void pulsein_interrupt_handler(uint8_t channel) {
132132
if (self->len < self->maxlen) {
133133
self->len++;
134134
} else {
135-
self->start++;
135+
self->start = (self->start + 1) % self->maxlen;
136136
}
137137
}
138138
self->last_overflow = current_overflow;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ static int pulsein_interrupt_handler(int irq, FAR void *context, FAR void *arg)
7575
if (self->len < self->maxlen) {
7676
self->len++;
7777
} else {
78-
self->start++;
78+
self->start = (self->start + 1) % self->maxlen;
7979
}
8080
}
8181
self->last_us = current_us;

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,19 +42,19 @@ STATIC void update_internal_buffer(pulseio_pulsein_obj_t *self) {
4242
for (size_t i = 0; i < length; i++) {
4343
uint16_t pos = (self->start + self->len) % self->maxlen;
4444
self->buffer[pos] = items[i].duration0 * 3;
45-
// Check if second item exists before incrementing
46-
if (items[i].duration1) {
47-
self->buffer[pos + 1] = items[i].duration1 * 3;
48-
if (self->len < (self->maxlen - 1)) {
49-
self->len += 2;
50-
} else {
51-
self->start += 2;
52-
}
45+
if (self->len < self->maxlen) {
46+
self->len++;
5347
} else {
48+
self->start = (self->start + 1) % self->maxlen;
49+
}
50+
// Check if second item exists
51+
if (items[i].duration1) {
52+
pos = (self->start + self->len) % self->maxlen;
53+
self->buffer[pos] = items[i].duration1 * 3;
5454
if (self->len < self->maxlen) {
5555
self->len++;
5656
} else {
57-
self->start++;
57+
self->start = (self->start + 1) % self->maxlen;
5858
}
5959
}
6060
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ static void _pulsein_handler(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action
103103
if (self->len < self->maxlen) {
104104
self->len++;
105105
} else {
106-
self->start++;
106+
self->start = (self->start + 1) % self->maxlen;
107107
}
108108
}
109109

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ STATIC void pulsein_exti_event_handler(uint8_t num) {
8989
if (self->len < self->maxlen) {
9090
self->len++;
9191
} else {
92-
self->start++;
92+
self->start = (self->start + 1) % self->maxlen;
9393
}
9494
}
9595

0 commit comments

Comments
 (0)