WIP: burst mode

This commit is contained in:
Jeremy Soller 2020-01-28 15:24:05 -07:00
parent 06e226e9c8
commit ae4379199c
No known key found for this signature in database
GPG Key ID: E988B49EE78A7FB1

View File

@ -37,6 +37,8 @@ void pmc_event(struct Pmc * pmc) {
static enum PmcState state = PMC_STATE_DEFAULT; static enum PmcState state = PMC_STATE_DEFAULT;
static uint8_t state_data[2] = {0, 0}; static uint8_t state_data[2] = {0, 0};
uint16_t burst_timeout;
for (burst_timeout = 1; burst_timeout > 0; burst_timeout--) {
uint8_t sts = pmc_status(pmc); uint8_t sts = pmc_status(pmc);
if (sts & PMC_STS_IBF) { if (sts & PMC_STS_IBF) {
uint8_t data = pmc_read(pmc); uint8_t data = pmc_read(pmc);
@ -53,6 +55,8 @@ void pmc_event(struct Pmc * pmc) {
break; break;
case 0x82: case 0x82:
DEBUG(" burst enable\n"); DEBUG(" burst enable\n");
// Run pmc_event in a tight loop for PMC_TIMEOUT iterations
burst_timeout = PMC_TIMEOUT;
// Set burst bit // Set burst bit
pmc_set_status(pmc, sts | (1 << 4)); pmc_set_status(pmc, sts | (1 << 4));
// Send acknowledgement byte // Send acknowledgement byte
@ -60,6 +64,8 @@ void pmc_event(struct Pmc * pmc) {
break; break;
case 0x83: case 0x83:
DEBUG(" burst disable\n"); DEBUG(" burst disable\n");
// Exit pmc_event tight loop
burst_timeout = 0;
// Clear burst bit // Clear burst bit
pmc_set_status(pmc, sts & ~(1 << 4)); pmc_set_status(pmc, sts & ~(1 << 4));
break; break;
@ -106,3 +112,4 @@ void pmc_event(struct Pmc * pmc) {
} }
} }
} }
}