Minor change to USB console init. Refactoring portab WIP.

pull/4/head
bob 2018-07-22 21:40:49 +10:00
rodzic f2fe098feb
commit 6ae3f3674a
8 zmienionych plików z 85 dodań i 56 usunięć

Wyświetl plik

@ -111,30 +111,35 @@ void pktConfigSerialDiag(void) {
#endif
}
/*void pktConfigSerialPkt(void) {
/**
* TODO: Move this into pktradio.c or make it an Si446x function in si446x.c
* The GPIO assignments per radio should be in the radio record.
*/
ioline_t pktSetLineModeICU(const radio_unit_t radio) {
(void)radio;
palSetLineMode(LINE_ICU, PAL_MODE_INPUT | PAL_MODE_ALTERNATE(2));
return LINE_ICU;
}
/**
* TODO: Move this into pktradio.c or make it an Si446x function in si446x.c
* The GPIO assignments per radio should be in the radio record.
*/
/*ioline_t pktSetLineModeRadioGPIO1(const radio_unit_t radio) {
(void)radio;
palSetLineMode(LINE_RADIO_GPIO1, PAL_MODE_INPUT_PULLDOWN);
return LINE_RADIO_GPIO1;
}*/
/**
* TODO: Move this into pktconf.h and use general GPIO to setup.
* TODO: Move this into pktradio.c or make it an Si446x function in si446x.c
* The GPIO assignments per radio should be in the radio record.
*/
void pktSetLineModeICU(void) {
palSetLineMode(LINE_ICU, PAL_MODE_INPUT | PAL_MODE_ALTERNATE(2));
}
/**
* TODO: Move this into pktconf.h and use general GPIO to setup.
*/
void pktSetLineModeRadioGPIO1(void) {
palSetLineMode(LINE_RADIO_GPIO1, PAL_MODE_INPUT_PULLDOWN);
}
/**
* TODO: Move this into pktconf.h and use general GPIO to setup.
*/
void pktSetLineModeRadioGPIO0(void) {
/*ioline_t pktSetLineModeRadioGPIO0(const radio_unit_t radio) {
(void)radio;
palSetLineMode(LINE_RADIO_GPIO0, PAL_MODE_INPUT_PULLDOWN);
}
return LINE_RADIO_GPIO0;
}*/
/*
* Read GPIO that are used for:
@ -152,7 +157,6 @@ uint8_t pktReadIOlines() {
void pktSerialStart(void) {
#if ENABLE_SERIAL_DEBUG == TRUE
pktConfigSerialDiag();
//pktConfigSerialPkt();
sdStart(SERIAL_CFG_DEBUG_DRIVER, &debug_config);
#endif
/* Setup diagnostic resource access semaphore. */

Wyświetl plik

@ -273,15 +273,15 @@ extern "C" {
void pktConfigSerialDiag(void);
void pktConfigSerialPkt(void);
void pktConfigureCoreIO(void);
void pktSetLineModeICU(void);
void pktSetLineModeRadioGPIO1(void);
void pktSetLineModeRadioGPIO0(void);
ioline_t pktSetLineModeICU(const radio_unit_t radio);
ioline_t pktSetLineModeRadioGPIO1(const radio_unit_t radio);
ioline_t pktSetLineModeRadioGPIO0(const radio_unit_t radio);
void pktSerialStart(void);
void dbgWrite(uint8_t level, uint8_t *buf, uint32_t len);
int dbgPrintf(uint8_t level, const char *format, ...);
void pktWrite(uint8_t *buf, uint32_t len);
void pktPowerUpRadio(radio_unit_t radio);
void pktPowerDownRadio(radio_unit_t radio);
//void pktPowerUpRadio(radio_unit_t radio);
//void pktPowerDownRadio(radio_unit_t radio);
radio_freq_t pktCheckAllowedFrequency(radio_unit_t radio, radio_freq_t freq);
uint8_t pktReadIOlines(void);
uint8_t pktGetNumRadios(void);

Wyświetl plik

@ -110,32 +110,34 @@ void pktConfigSerialDiag(void) {
}
/**
* Configure packet dump output
* TODO: Move this into pktradio.c or make it an Si446x function in si446x.c
* The GPIO assignments per radio should be in the radio record.
*/
/*void pktConfigSerialPkt(void) {
ioline_t pktSetLineModeICU(const radio_unit_t radio) {
(void)radio;
palSetLineMode(LINE_ICU, PAL_MODE_INPUT | PAL_MODE_ALTERNATE(2));
return LINE_ICU;
}
/**
* TODO: Move this into pktradio.c or make it an Si446x function in si446x.c
* The GPIO assignments per radio should be in the radio record.
*/
/*ioline_t pktSetLineModeRadioGPIO1(const radio_unit_t radio) {
(void)radio;
palSetLineMode(LINE_RADIO_GPIO1, PAL_MODE_INPUT_PULLDOWN);
return LINE_RADIO_GPIO1;
}*/
/**
* TODO: Move this into pktconf.h and use general GPIO to setup.
* TODO: Move this into pktradio.c or make it an Si446x function in si446x.c
* The GPIO assignments per radio should be in the radio record.
*/
void pktSetLineModeICU(void) {
palSetLineMode(LINE_ICU, PAL_MODE_INPUT | PAL_MODE_ALTERNATE(2));
}
/**
* TODO: Move this into pktconf.h and use general GPIO to setup.
*/
void pktSetLineModeRadioGPIO1(void) {
palSetLineMode(LINE_RADIO_GPIO1, PAL_MODE_INPUT_PULLDOWN);
}
/**
* TODO: Move this into pktconf.h and use general GPIO to setup.
*/
void pktSetLineModeRadioGPIO0(void) {
/*ioline_t pktSetLineModeRadioGPIO0(const radio_unit_t radio) {
(void)radio;
palSetLineMode(LINE_RADIO_GPIO0, PAL_MODE_INPUT_PULLDOWN);
}
return LINE_RADIO_GPIO0;
}*/
/*
* Read GPIO that are used for:

Wyświetl plik

@ -270,9 +270,9 @@ extern "C" {
void pktConfigSerialDiag(void);
void pktConfigSerialPkt(void);
void pktConfigureCoreIO(void);
void pktSetLineModeICU(void);
void pktSetLineModeRadioGPIO1(void);
void pktSetLineModeRadioGPIO0(void);
ioline_t pktSetLineModeICU(const radio_unit_t radio);
ioline_t pktSetLineModeRadioGPIO1(const radio_unit_t radio);
ioline_t pktSetLineModeRadioGPIO0(const radio_unit_t radio);
void pktSerialStart(void);
void dbgWrite(uint8_t level, uint8_t *buf, uint32_t len);
int dbgPrintf(uint8_t level, const char *format, ...);

Wyświetl plik

@ -845,9 +845,18 @@ bool Si446x_radioStartup(const radio_unit_t radio) {
/* Assert SDN low to perform POR wakeup. */
palClearLine(LINE_RADIO_SDN);
/* Set MCU GPIO input for CTS and POR of radio from GPIO1 and GPIO0. */
pktSetLineModeRadioGPIO1();
pktSetLineModeRadioGPIO0();
/*
* Set MCU GPIO input for POR and CTS of radio from GPIO0 and GPIO1.
* TODO: Add function to get radio_list record for this radio number.
* Then get LINE_GPIO_XXX from the radio record.
* Should these setups go into coreIO function?
*/
palSetLineMode(LINE_RADIO_GPIO0, PAL_MODE_INPUT_PULLDOWN);
palSetLineMode(LINE_RADIO_GPIO1, PAL_MODE_INPUT_PULLDOWN);
ioline_t cts = LINE_RADIO_GPIO1;
//return LINE_RADIO_GPIO1;
//ioline_t cts = pktSetLineModeRadioGPIO1(radio);
//pktSetLineModeRadioGPIO0(radio);
/* Wait for transceiver to wake up (maximum wakeup time is 6mS).
* During start up the POR state is on GPIO0.
* This goes from zero to one when POR completes.
@ -855,7 +864,7 @@ bool Si446x_radioStartup(const radio_unit_t radio) {
*/
chThdSleep(TIME_MS2I(10));
/* Return state of CTS after delay. */
return pktReadGPIOline(LINE_RADIO_GPIO1) == PAL_HIGH;
return pktReadGPIOline(cts) == PAL_HIGH;
}
/**

Wyświetl plik

@ -33,11 +33,20 @@ THD_FUNCTION(pktConsole, arg) {
CHN_CONNECTED | CHN_DISCONNECTED | CHN_INPUT_AVAILABLE);
console_state = CON_CHN_READY;
/* Initialisation done. Wait for start from initiator. */
/* Next run the handshake protocol to start the control thread. */
/*Wait for start from initiator. */
thread_t *initiator = chMsgWait();
(void)chMsgGet(initiator);
/* Release the initiator which then enables the channel. */
/* Release the initiator which next enables the channel. */
chMsgRelease(initiator, MSG_OK);
/* Wait for channel to be started. */
initiator = chMsgWait();
(void)chMsgGet(initiator);
/* Release the initiator which then completes. */
chMsgRelease(initiator, MSG_OK);
while(true) {
@ -157,10 +166,15 @@ msg_t pktStartConsole(void) {
if(console == NULL)
return MSG_TIMEOUT;
/* Wait for thread to start. */
msg_t smsg = chMsgSend(console, MSG_OK);
/* Start serial over USB. */
sduStart(&SDU1, &serusbcfg);
/* Signal thread to enter event monitoring. */
smsg = chMsgSend(console, MSG_OK);
return smsg;
}

Wyświetl plik

@ -96,11 +96,11 @@ THD_FUNCTION(pktPWMispatcher, arg) {
*
* @api
*/
ICUDriver *pktAttachICU(radio_unit_t radio_id) {
ICUDriver *pktAttachICU(radio_unit_t radio) {
/* For now there is only one radio and a fixed ICU association.
* TODO: Implement Radio <-> ICU association code and data structure.
*/
(void)radio_id;
//(void)radio_id;
/*
* Initialize the RX_DATA capture ICU.
@ -113,7 +113,7 @@ ICUDriver *pktAttachICU(radio_unit_t radio_id) {
/* The RX_DATA input is routed to ICU timer.
* Set in portab.c
*/
pktSetLineModeICU();
(void)pktSetLineModeICU(radio);
/* If using PWM mirror to output to a diagnostic port. */
pktSetGPIOlineMode(LINE_PWM_MIRROR, PAL_MODE_OUTPUT_PUSHPULL);

Wyświetl plik

@ -178,7 +178,7 @@ extern "C" {
/*===========================================================================*/
/**
* @brief Alias for convenience of pktStopDecoder.
* @brief Alias of pktStopDecoder for convenience.
*
* @param[in] radio radio unit ID
*