/***************************************************************************** * FUNCTION: RawSetByte * * RETURNS: None * * PARAMS: * rawId - RAW ID * pBuffer - Buffer containing bytes to write * length - number of bytes to read * * NOTES: Writes bytes to RAW window *****************************************************************************/ void RawSetByte(uint16_t rawId, uint8_t *pBuffer, uint16_t length) { uint8_t regId; #if defined(OUTPUT_RAW_TX_RX) uint16_t i; #endif /* if previously set index past legal range and now trying to write to RAW engine */ if ( (rawId == 0) && g_rxIndexSetBeyondBuffer && (GetRawWindowState(RAW_TX_ID) == WF_RAW_DATA_MOUNTED) ) { SYS_ASSERT(false, ""); /* attempting to write past end of RAW window */ } /* write RAW data to chip */ regId = (rawId==RAW_ID_0)?RAW_0_DATA_REG:RAW_1_DATA_REG; WriteWFArray(regId, pBuffer, length); #if defined(OUTPUT_RAW_TX_RX) for (i = 0; i < length; ++i) { char buf[16]; sprintf(buf,"T: %#x\r\n", pBuffer[i]); SYS_CONSOLE_MESSAGE(buf); } #endif }
/***************************************************************************** * FUNCTION: RawSetByte * * RETURNS: None * * PARAMS: * rawId - RAW ID * pBuffer - Buffer containing bytes to write * length - number of bytes to read * * NOTES: Writes bytes to RAW window *****************************************************************************/ void RawSetByte(UINT16 rawId, UINT8 *pBuffer, UINT16 length) { UINT8 regId; #if defined(OUTPUT_RAW_TX_RX) char buf [8]; #endif /* if previously set index past legal range and now trying to write to RAW engine */ if ( (rawId == 0) && g_rxIndexSetBeyondBuffer && (GetRawWindowState(RAW_TX_ID) == WF_RAW_DATA_MOUNTED) ) { // WF_ASSERT(FALSE); /* attempting to write past end of RAW window */ } /* write RAW data to chip */ regId = (rawId == RAW_ID_0) ? RAW_0_DATA_REG : RAW_1_DATA_REG; WriteWFArray(regId, pBuffer, length); #if defined(OUTPUT_RAW_TX_RX) putrsUART("T:"); while (length-- != 0) { sprintf(buf," %02X", *pBuffer++); putsUART(buf); } putrsUART("\r\n"); #endif }
/***************************************************************************** * FUNCTION: RawSetByte * * RETURNS: None * * PARAMS: * rawId - RAW ID * pBuffer - Buffer containing bytes to write * length - number of bytes to read * * NOTES: Writes bytes to RAW window *****************************************************************************/ void RawSetByte(UINT16 rawId, UINT8 *pBuffer, UINT16 length) { UINT8 regId; #if defined(OUTPUT_RAW_TX_RX) UINT16 i; #endif /* if previously set index past legal range and now trying to write to RAW engine */ if ( (rawId == 0) && g_rxIndexSetBeyondBuffer && (GetRawWindowState(RAW_TX_ID) == WF_RAW_DATA_MOUNTED) ) { // WF_ASSERT(FALSE); /* attempting to write past end of RAW window */ } /* write RAW data to chip */ regId = (rawId==RAW_ID_0)?RAW_0_DATA_REG:RAW_1_DATA_REG; WriteWFArray(regId, pBuffer, length); #if defined(OUTPUT_RAW_TX_RX) for (i = 0; i < length; ++i) { char buf[16]; sprintf(buf,"T: %#x\r\n", pBuffer[i]); putsUART(buf); } #endif }
/***************************************************************************** * FUNCTION: RawSetByte * * RETURNS: None * * PARAMS: * rawId - RAW ID * pBuffer - Buffer containing bytes to write * length - number of bytes to read * * NOTES: Writes bytes to RAW window *****************************************************************************/ void RawSetByte(UINT16 rawId, UINT8 *pBuffer, UINT16 length) { UINT8 regId; WF_ASSERT(!isIndexOutOfBounds(rawId)); /* attempting to write past end of RAW buffer */ /* write data to raw window */ regId = g_RawDataReg[rawId]; WriteWFArray(regId, pBuffer, length); }
/***************************************************************************** * FUNCTION: RawSetByte * * RETURNS: None * * PARAMS: * rawId - RAW ID * pBuffer - Buffer containing bytes to write * length - number of bytes to read * * NOTES: Writes bytes to RAW window *****************************************************************************/ void RawSetByte(uint16_t rawId, uint8_t *pBuffer, uint16_t length) { uint8_t regId; SYS_ASSERT(!isIndexOutOfBounds(rawId), ""); /* attempting to write past end of RAW buffer */ /* write data to raw window */ regId = g_RawDataReg[rawId]; WriteWFArray(regId, pBuffer, length); }
/* * Write bytes to RAW window. * Parameters: * rawId - RAW ID * pBuffer - Buffer containing bytes to write * length - number of bytes to read */ void RawSetByte(uint16_t rawId, const uint8_t *p_buffer, uint16_t length) { uint8_t regId; // if trying to write past end of raw window if (isIndexOutOfBounds(rawId)) { EventEnqueue(WF_EVENT_ERROR, UD_ERROR_RAW_SET_BYTE_OUT_OF_BOUNDS); } /* write data to raw window */ regId = g_RawDataReg[rawId]; WriteWFArray(regId, p_buffer, length); }
/* ********************************************************************************************************* * WF_TxDataSendPacket() * * Description : Directs the MRF24WB0M to transmit a Tx data packet to the 802.11 network. * * Argument(s) : length - length, in bytes, of data packet * * Return(s) : Error code * * Caller(s) : Application * * Notes: : (1) MRF24WB0M Tx data block must first be allocated via WF_TxDataAllocateBuffer() * * (2) Current support only for full length Tx data messaages. In other words, startIndex * must be 0, and length must be the total length of the Tx data packet. * ********************************************************************************************************* */ void WF_TxDataSendPacket(uint16_t length) { tTxDataPreamble txPreamble; /* fill in tx data preamble with correct header */ txPreamble.type = WF_DATA_REQUEST_TYPE; txPreamble.subType = WF_STD_DATA_MSG_SUBTYPE; txPreamble.h2 = 1; txPreamble.h3 = 0; /* Ensure the MRF24WB0M is awake (only applies if PS-Poll was enabled) */ EnsureWFisAwake(); /* write out preamble to MRF24WB0M buffer to the two extra bytes at start of allocated buffer */ RawSetIndex(RAW_TX_ID, 0); WriteWFArray(RAW_1_DATA_REG, (uint8_t *)&txPreamble, WF_SIZE_OF_TX_DATA_PREAMBLE ); /* now tell MRF24WB0M to transmit the tx data packet */ RawSendTxBuffer(length); }
/* ********************************************************************************************************* * WF_TxDataWrite() * * Description : Writes Tx packet data from Host CPU to MRF24WB0M tx buffer * * Argument(s) : p_txData - Pointer to Tx data * length - length, in bytes, of Tx data * startIndex - Index within MRF24WB0M Tx data block to start writing * * Return(s) : None * * Caller(s) : Application * * Notes: : (1) MRF24WB0M Tx data block must first be allocated via WF_TxDataAllocateBuffer() * * (2) Current support only for full length Tx data messaages. In other words, startIndex * must be 0, and length must be the total length of the Tx data packet. * ********************************************************************************************************* */ void WF_TxDataWrite(uint8_t *p_txData, uint16_t length, uint16_t startIndex) { WF_ASSERT(startIndex == 0); if (length == 0) { return; } /* Ensure the MRF24WB0M is awake (only applies if PS-Poll was enabled) */ EnsureWFisAwake(); /* set the RAW index to desired location, offset by the Tx data preamble */ RawSetIndex(RAW_TX_ID, startIndex + WF_SIZE_OF_TX_DATA_PREAMBLE); /* write tx data to chip */ WriteWFArray(RAW_1_DATA_REG, p_txData, length); }