void announceInit()
{
	// Open socket
	do {
		spiWriteWord(REG_S2_PORT0, ANNOUNCE_PORT);
		spiWriteReg(REG_S2_MR, MR_UDP);
		spiWriteReg(REG_S2_CR, CR_OPEN);
		if(spiReadReg(REG_S2_SR) != SOCK_UDP)
			spiWriteReg(REG_S2_CR, CR_CLOSE);
	} while(spiReadReg(REG_S2_SR) != SOCK_UDP);


	DBG_ANN(tracePGMlnAnn(mDebugAnn_DONE);)

}
Exemple #2
0
/**
 * readReg
 *
 * Read CC1101 register via SPI
 *
 * 'regAddr'    Register address
 * 'regType'    Type of register: CC1101_CONFIG_REGISTER or CC1101_STATUS_REGISTER
 *
 * Return:
 *      Data byte returned by the CC1101 IC
 */
byte CC1101_readReg(byte regAddr, byte regType)
{
  byte addr, val;

  addr = regAddr | regType;
  cc1101_Select();                      // Select CC1101
  wait_Miso();                          // Wait until MISO goes low

//  // have to do it twice for some reason, first read fails
//  spi_send(addr);                       // Send register address
//  //val = spi_send(addr);
//  DSK6713_waitusec(5);
//  //DSK6713_waitusec(25);
//  val = spi_send(0x00);                 // Read result
//  DSK6713_waitusec(20);
//
//  spi_send(addr);                       // Send register address
//  DSK6713_waitusec(5);
//  val = spi_send(0x00);                 // Read result
//  DSK6713_waitusec(20);

  val = spiReadReg(addr);

  cc1101_Deselect();                    // Deselect CC1101

  return val;
}
void announceReply()
{
	uint8_t txBuffer[100];
	uint8_t* txPtr;
	uint8_t packetLength = 0;
	uint16_t writePointer;
	uint8_t value;
	uint8_t i;

	writePointer = spiReadWord(REG_S2_TX_WR0) + S2_TX_START;
	txPtr = txBuffer + 2;

	// Send IP address in hex
	//
	for(i = REG_SIPR0; i <= REG_SIPR3; i++) {
		value = spiReadReg(i);
		*txPtr++ = hex[value >> 4];
		*txPtr++ = hex[value & 0xf];
	}
	//
	// Tag on ident string
	//
	memcpy_P(txPtr, bootloaderIdentString, bootloaderIdentStringLength);
	packetLength = 8 + bootloaderIdentStringLength;

	// Write packet length at start of packet
	txBuffer[0] = 0;
	txBuffer[1] = packetLength;
	packetLength += 2;
	txPtr = txBuffer;
	while(packetLength--) {
		spiWriteReg(writePointer++, *txPtr++);
		if(writePointer == S2_TX_END) writePointer = S2_TX_START;
	}
	spiWriteWord(REG_S2_TX_WR0, writePointer - S2_TX_START);
	spiWriteReg(REG_S2_CR, CR_SEND);
	while(spiReadReg(REG_S2_CR));
}