[hal] Fix and document addressable LED timings (#5272)

HAL_SetAddressableLEDBitTiming swapped high and low timings for whatever
was written to it. This fixes that bug.

Additionally, the API has been updated to take high time first, and then
low time. This is due to this being the physical data format, so having
the API match is clearer.

Additionally, update the docs with the defaults.
This commit is contained in:
Thad House
2023-04-28 20:54:58 -07:00
committed by GitHub
parent 90fabe9651
commit 5162d0001c
8 changed files with 50 additions and 45 deletions

View File

@@ -206,10 +206,10 @@ void HAL_WriteAddressableLEDData(HAL_AddressableLEDHandle handle,
}
void HAL_SetAddressableLEDBitTiming(HAL_AddressableLEDHandle handle,
int32_t lowTime0NanoSeconds,
int32_t highTime0NanoSeconds,
int32_t lowTime1NanoSeconds,
int32_t lowTime0NanoSeconds,
int32_t highTime1NanoSeconds,
int32_t lowTime1NanoSeconds,
int32_t* status) {
auto led = addressableLEDHandles->Get(handle);
if (!led) {
@@ -217,10 +217,10 @@ void HAL_SetAddressableLEDBitTiming(HAL_AddressableLEDHandle handle,
return;
}
led->led->writeLowBitTickTiming(1, highTime0NanoSeconds / 25, status);
led->led->writeLowBitTickTiming(0, lowTime0NanoSeconds / 25, status);
led->led->writeHighBitTickTiming(1, highTime1NanoSeconds / 25, status);
led->led->writeHighBitTickTiming(0, lowTime1NanoSeconds / 25, status);
led->led->writeLowBitTickTiming(0, highTime0NanoSeconds / 25, status);
led->led->writeLowBitTickTiming(1, lowTime0NanoSeconds / 25, status);
led->led->writeHighBitTickTiming(0, highTime1NanoSeconds / 25, status);
led->led->writeHighBitTickTiming(1, lowTime1NanoSeconds / 25, status);
}
void HAL_SetAddressableLEDSyncTime(HAL_AddressableLEDHandle handle,

View File

@@ -85,12 +85,12 @@ Java_edu_wpi_first_hal_AddressableLEDJNI_setData
*/
JNIEXPORT void JNICALL
Java_edu_wpi_first_hal_AddressableLEDJNI_setBitTiming
(JNIEnv* env, jclass, jint handle, jint lowTime0, jint highTime0,
jint lowTime1, jint highTime1)
(JNIEnv* env, jclass, jint handle, jint highTime0, jint lowTime0,
jint highTime1, jint lowTime1)
{
int32_t status = 0;
HAL_SetAddressableLEDBitTiming(static_cast<HAL_AddressableLEDHandle>(handle),
lowTime0, highTime0, lowTime1, highTime1,
highTime0, lowTime0, highTime1, lowTime1,
&status);
CheckStatus(env, status);
}

View File

@@ -36,10 +36,10 @@ void HAL_WriteAddressableLEDData(HAL_AddressableLEDHandle handle,
int32_t length, int32_t* status);
void HAL_SetAddressableLEDBitTiming(HAL_AddressableLEDHandle handle,
int32_t lowTime0NanoSeconds,
int32_t highTime0NanoSeconds,
int32_t lowTime1NanoSeconds,
int32_t lowTime0NanoSeconds,
int32_t highTime1NanoSeconds,
int32_t lowTime1NanoSeconds,
int32_t* status);
void HAL_SetAddressableLEDSyncTime(HAL_AddressableLEDHandle handle,

View File

@@ -146,10 +146,10 @@ void HAL_WriteAddressableLEDData(HAL_AddressableLEDHandle handle,
}
void HAL_SetAddressableLEDBitTiming(HAL_AddressableLEDHandle handle,
int32_t lowTime0NanoSeconds,
int32_t highTime0NanoSeconds,
int32_t lowTime1NanoSeconds,
int32_t lowTime0NanoSeconds,
int32_t highTime1NanoSeconds,
int32_t lowTime1NanoSeconds,
int32_t* status) {}
void HAL_SetAddressableLEDSyncTime(HAL_AddressableLEDHandle handle,