/**
* HplTda5250DataP module
*
+ * @author Philipp Hupertz (huppertz@tkn.tu-berlin.de)
* @author Kevin Klues (klues@tkn.tu-berlin.de)
*/
provides {
interface Init;
interface HplTda5250Data;
+ interface HplTda5250DataControl;
interface Resource;
+ interface ResourceRequested;
}
uses {
interface GeneralIO as DATA;
- // FIXME: platform dependence at HPL-level!
- interface HplMsp430Usart as Usart;
- interface HplMsp430UsartInterrupts as UsartInterrupts;
+ interface UartStream as Uart;
+ interface HplTda5250DataControl as UartDataControl;
interface Resource as UartResource;
+ interface ResourceRequested as UartResourceRequested;
}
}
if(call UartResource.immediateRequest() == EBUSY) {
return EBUSY;
}
- call Usart.setModeUART();
return SUCCESS;
}
- async command void Resource.release() {
- call Usart.disableRxIntr();
- call Usart.disableTxIntr();
- call UartResource.release();
+ async command error_t Resource.release() {
+ return call UartResource.release();
}
async command bool Resource.isOwner() {
}
event void UartResource.granted() {
- call Usart.setModeUART();
signal Resource.granted();
}
-
- async command error_t HplTda5250Data.tx(uint8_t data) {
- if(call UartResource.isOwner() == FALSE)
- return FAIL;
- call Usart.tx(data);
- return SUCCESS;
+
+ async event void UartResourceRequested.requested() {
+ signal ResourceRequested.requested();
}
-
- async command bool HplTda5250Data.isTxDone() {
- if(call UartResource.isOwner() == FALSE)
- return FAIL;
- return call Usart.isTxEmpty();
+
+ async event void UartResourceRequested.immediateRequested() {
+ signal ResourceRequested.immediateRequested();
}
- async command error_t HplTda5250Data.enableTx() {
+ async command error_t HplTda5250Data.tx(uint8_t data) {
if(call UartResource.isOwner() == FALSE)
return FAIL;
- call Usart.setModeUART_TX();
- call Usart.setClockSource(SSEL_SMCLK);
- call Usart.setClockRate(UBR_SMCLK_38400, UMCTL_SMCLK_38400);
- call Usart.enableTxIntr();
- return SUCCESS;
+ return call Uart.send(&data, 1);
}
- async command error_t HplTda5250Data.disableTx() {
+ async event void Uart.sendDone( uint8_t* buf, uint16_t len, error_t error ) {
if(call UartResource.isOwner() == FALSE)
- return FAIL;
- call Usart.disableUARTTx();
- call Usart.disableTxIntr();
- return SUCCESS;
+ return;
+ signal HplTda5250Data.txReady();
}
-
- async command error_t HplTda5250Data.enableRx() {
- if(call UartResource.isOwner() == FALSE)
- return FAIL;
- call Usart.setModeUART_RX();
- call Usart.setClockSource(SSEL_SMCLK);
- call Usart.setClockRate(UBR_SMCLK_38400, UMCTL_SMCLK_38400);
- call Usart.enableRxIntr();
+
+ async event void Uart.receivedByte( uint8_t data ) {
+ if(call UartResource.isOwner() == FALSE)
+ return;
+ signal HplTda5250Data.rxDone(data);
+ }
+ async event void Uart.receiveDone( uint8_t* buf, uint16_t len, error_t error ) {}
+
+ async command error_t HplTda5250DataControl.setToTx() {
+ call UartDataControl.setToTx();
return SUCCESS;
}
- async command error_t HplTda5250Data.disableRx() {
- if(call UartResource.isOwner() == FALSE)
- return FAIL;
- call Usart.disableUARTRx();
- call Usart.disableRxIntr();
+ async command error_t HplTda5250DataControl.setToRx() {
+ call UartDataControl.setToRx();
return SUCCESS;
}
-
- async event void UsartInterrupts.txDone() {
- if(call UartResource.isOwner() == FALSE)
- return;
- signal HplTda5250Data.txReady();
- }
-
- async event void UsartInterrupts.rxDone(uint8_t data) {
- if(call UartResource.isOwner() == FALSE)
- return;
- signal HplTda5250Data.rxDone(data);
- }
-
+
default event void Resource.granted() {}
default async event void HplTda5250Data.txReady() {}
default async event void HplTda5250Data.rxDone(uint8_t data) {}