clang-format changes

This commit is contained in:
skullY 2019-08-30 11:19:03 -07:00 committed by skullydazed
parent 61af76a10d
commit b624f32f94
502 changed files with 32259 additions and 39062 deletions

View file

@ -46,26 +46,22 @@ POSSIBILITY OF SUCH DAMAGE.
#include "ps2_io.h"
#include "print.h"
#define WAIT(stat, us, err) do { \
if (!wait_##stat(us)) { \
ps2_error = err; \
goto ERROR; \
} \
} while (0)
#define WAIT(stat, us, err) \
do { \
if (!wait_##stat(us)) { \
ps2_error = err; \
goto ERROR; \
} \
} while (0)
uint8_t ps2_error = PS2_ERR_NONE;
static inline uint8_t pbuf_dequeue(void);
static inline void pbuf_enqueue(uint8_t data);
static inline bool pbuf_has_data(void);
static inline void pbuf_clear(void);
static inline void pbuf_enqueue(uint8_t data);
static inline bool pbuf_has_data(void);
static inline void pbuf_clear(void);
void ps2_host_init(void)
{
void ps2_host_init(void) {
idle();
PS2_INT_INIT();
PS2_INT_ON();
@ -73,26 +69,25 @@ void ps2_host_init(void)
//_delay_ms(2500);
}
uint8_t ps2_host_send(uint8_t data)
{
uint8_t ps2_host_send(uint8_t data) {
bool parity = true;
ps2_error = PS2_ERR_NONE;
ps2_error = PS2_ERR_NONE;
PS2_INT_OFF();
/* terminate a transmission if we have */
inhibit();
_delay_us(100); // 100us [4]p.13, [5]p.50
_delay_us(100); // 100us [4]p.13, [5]p.50
/* 'Request to Send' and Start bit */
data_lo();
clock_hi();
WAIT(clock_lo, 10000, 10); // 10ms [5]p.50
WAIT(clock_lo, 10000, 10); // 10ms [5]p.50
/* Data bit[2-9] */
for (uint8_t i = 0; i < 8; i++) {
_delay_us(15);
if (data&(1<<i)) {
if (data & (1 << i)) {
parity = !parity;
data_hi();
} else {
@ -104,7 +99,11 @@ uint8_t ps2_host_send(uint8_t data)
/* Parity bit */
_delay_us(15);
if (parity) { data_hi(); } else { data_lo(); }
if (parity) {
data_hi();
} else {
data_lo();
}
WAIT(clock_hi, 50, 4);
WAIT(clock_lo, 50, 5);
@ -129,8 +128,7 @@ ERROR:
return 0;
}
uint8_t ps2_host_recv_response(void)
{
uint8_t ps2_host_recv_response(void) {
// Command may take 25ms/20ms at most([5]p.46, [3]p.21)
uint8_t retry = 25;
while (retry-- && !pbuf_has_data()) {
@ -140,8 +138,7 @@ uint8_t ps2_host_recv_response(void)
}
/* get data received by interrupt */
uint8_t ps2_host_recv(void)
{
uint8_t ps2_host_recv(void) {
if (pbuf_has_data()) {
ps2_error = PS2_ERR_NONE;
return pbuf_dequeue();
@ -151,16 +148,22 @@ uint8_t ps2_host_recv(void)
}
}
ISR(PS2_INT_VECT)
{
ISR(PS2_INT_VECT) {
static enum {
INIT,
START,
BIT0, BIT1, BIT2, BIT3, BIT4, BIT5, BIT6, BIT7,
BIT0,
BIT1,
BIT2,
BIT3,
BIT4,
BIT5,
BIT6,
BIT7,
PARITY,
STOP,
} state = INIT;
static uint8_t data = 0;
} state = INIT;
static uint8_t data = 0;
static uint8_t parity = 1;
// TODO: abort if elapse 100us from previous interrupt
@ -173,8 +176,7 @@ ISR(PS2_INT_VECT)
state++;
switch (state) {
case START:
if (data_in())
goto ERROR;
if (data_in()) goto ERROR;
break;
case BIT0:
case BIT1:
@ -192,16 +194,13 @@ ISR(PS2_INT_VECT)
break;
case PARITY:
if (data_in()) {
if (!(parity & 0x01))
goto ERROR;
if (!(parity & 0x01)) goto ERROR;
} else {
if (parity & 0x01)
goto ERROR;
if (parity & 0x01) goto ERROR;
}
break;
case STOP:
if (!data_in())
goto ERROR;
if (!data_in()) goto ERROR;
pbuf_enqueue(data);
goto DONE;
break;
@ -212,68 +211,61 @@ ISR(PS2_INT_VECT)
ERROR:
ps2_error = state;
DONE:
state = INIT;
data = 0;
state = INIT;
data = 0;
parity = 1;
RETURN:
return;
}
/* send LED state to keyboard */
void ps2_host_set_led(uint8_t led)
{
void ps2_host_set_led(uint8_t led) {
ps2_host_send(0xED);
ps2_host_send(led);
}
/*--------------------------------------------------------------------
* Ring buffer to store scan codes from keyboard
*------------------------------------------------------------------*/
#define PBUF_SIZE 32
static uint8_t pbuf[PBUF_SIZE];
static uint8_t pbuf_head = 0;
static uint8_t pbuf_tail = 0;
static inline void pbuf_enqueue(uint8_t data)
{
static uint8_t pbuf[PBUF_SIZE];
static uint8_t pbuf_head = 0;
static uint8_t pbuf_tail = 0;
static inline void pbuf_enqueue(uint8_t data) {
uint8_t sreg = SREG;
cli();
uint8_t next = (pbuf_head + 1) % PBUF_SIZE;
if (next != pbuf_tail) {
pbuf[pbuf_head] = data;
pbuf_head = next;
pbuf_head = next;
} else {
print("pbuf: full\n");
}
SREG = sreg;
}
static inline uint8_t pbuf_dequeue(void)
{
static inline uint8_t pbuf_dequeue(void) {
uint8_t val = 0;
uint8_t sreg = SREG;
cli();
if (pbuf_head != pbuf_tail) {
val = pbuf[pbuf_tail];
val = pbuf[pbuf_tail];
pbuf_tail = (pbuf_tail + 1) % PBUF_SIZE;
}
SREG = sreg;
return val;
}
static inline bool pbuf_has_data(void)
{
static inline bool pbuf_has_data(void) {
uint8_t sreg = SREG;
cli();
bool has_data = (pbuf_head != pbuf_tail);
SREG = sreg;
SREG = sreg;
return has_data;
}
static inline void pbuf_clear(void)
{
static inline void pbuf_clear(void) {
uint8_t sreg = SREG;
cli();
pbuf_head = pbuf_tail = 0;
SREG = sreg;
SREG = sreg;
}