Esempio n. 1
0
void RFM70::initRegisters() {
	int i=0;
	// Init bank 0 registers
	selectBank(0);

	// The last two regs in the bank0Init list will be handled later
	for (int i = 0; i < 20; i++) {
		uint8_t data[] = {RFM70_bank0Init[i][0],RFM70_bank0Init[i][1]};
		spiSend(0, data, 2);
	}

	// Init address registers in bank 0
	spiSend(0, (uint8_t *) RFM70_cmd_adrRX0, NELEMS(RFM70_cmd_adrRX0));
	spiSend(0, (uint8_t *) RFM70_cmd_adrRX1, NELEMS(RFM70_cmd_adrRX1));
	spiSend(0, (uint8_t *) RFM70_cmd_adrTX, NELEMS(RFM70_cmd_adrTX));

	uint8_t data[] = {RFM70_REG_FEATURE, 0x00};
#if 1
	i=readRegVal(RFM70_REG_FEATURE);
	if (i==0) {
		spiSend(0, (uint8_t *)RFM70_cmd_activate, 2);
	}
#endif

	// Set Registers 1D and 1C
	data[0] = RFM70_bank0Init[22][0];
	data[1] = RFM70_bank0Init[22][1];
	spiSend(0, data, 2);

	data[0] = RFM70_bank0Init[21][0];
	data[1] = RFM70_bank0Init[21][1];
	spiSend(0, data, 2);

	// Init bank 1 registers
	selectBank(1);

	for (int i = 0; i < 14; i++) {
		spiSend(0, (uint8_t *) RFM70_bank1Init[i], NELEMS(RFM70_bank1Init[i]));
	}

	// Set ramp curve
	spiSend(0, (uint8_t *) RFM70_bank1R0EInit, NELEMS(RFM70_bank1R0EInit));

	// Do we have to toggle some bits here like in the example code?
	spiSend(0, (uint8_t *) RFM70_cmd_tog1, NELEMS(RFM70_cmd_tog1));
	spiSend(0, (uint8_t *) RFM70_cmd_tog2, NELEMS(RFM70_cmd_tog2));
	delayMs(RFM70_END_INIT_WAIT_MS);

	// Check the ChipID
	if (readRegVal(0x08) != 0x63) {
		debug(RFM70_DEBUG_WRONG_CHIP_ID);
	}

	printf("chid id is 0x%02x\n", readRegVal(0x08));
//		debug(RFM70_SHOW_REGISTERS);
	selectBank(0);
	setModeRX();

}
Esempio n. 2
0
bool initRegisters()
{
  // init bank 0 registers
  selectBank(0);

  // !! The last two regs in the bank0Init list will be handled later
  for (int i = 0; i < 20; i++)
    writeRegVal(pgm_read_byte(&RFM73_bank0Init[i][0]), pgm_read_byte(&RFM73_bank0Init[i][1]));

  // init address registers in bank 0
  writeRegPgmBuf((uint8_t *)RFM73_cmd_adrRX0, sizeof(RFM73_cmd_adrRX0));
  writeRegPgmBuf((uint8_t *)RFM73_cmd_adrRX1, sizeof(RFM73_cmd_adrRX1));
  writeRegPgmBuf((uint8_t *)RFM73_cmd_adrTX, sizeof(RFM73_cmd_adrTX));

  // activate Feature register
  if (!readRegVal(RFM73_REG_FEATURE))
    writeRegPgmBuf((uint8_t *)RFM73_cmd_activate, sizeof(RFM73_cmd_activate));

  // now set Registers 1D and 1C
  writeRegVal(pgm_read_byte(&RFM73_bank0Init[22][0]), pgm_read_byte(&RFM73_bank0Init[22][1]));
  writeRegVal(pgm_read_byte(&RFM73_bank0Init[21][0]), pgm_read_byte(&RFM73_bank0Init[21][1]));

  // init bank 1 registers
  selectBank(1);

  for (int i = 0; i < 14; i++)
    writeRegPgmBuf((uint8_t *)RFM73_bank1Init[i], sizeof(RFM73_bank1Init[i]));

  // set ramp curve
  writeRegPgmBuf((uint8_t *)RFM73_bank1R0EInit, sizeof(RFM73_bank1R0EInit));

  // do we have to toggle some bits here like in the example code?
  writeRegPgmBuf((uint8_t *)RFM73_cmd_tog1, sizeof(RFM73_cmd_tog1));
  writeRegPgmBuf((uint8_t *)RFM73_cmd_tog2, sizeof(RFM73_cmd_tog2));


  _delay_ms(RFM73_END_INIT_WAIT_MS);

  //Check the ChipID
  if (readRegVal(0x08) != 0x63)
  {
    return false;
  }

  selectBank(0);
  setModeRX();

  return true;
}
Esempio n. 3
0
void RFM70::initRegisters() {

    // Init bank 0 registers
    selectBank(0);

    // The last two regs in the bank0Init list will be handled later
    for (int i = 0; i < 20; i++) {
        writeRegVal(pgm_read_byte(&RFM70_bank0Init[i][0]),
                    pgm_read_byte(&RFM70_bank0Init[i][1]));
    }

    // Init address registers in bank 0
    writeRegPgmBuf((uint8_t *) RFM70_cmd_adrRX0, sizeof(RFM70_cmd_adrRX0));
    writeRegPgmBuf((uint8_t *) RFM70_cmd_adrRX1, sizeof(RFM70_cmd_adrRX1));
    writeRegPgmBuf((uint8_t *) RFM70_cmd_adrTX, sizeof(RFM70_cmd_adrTX));

    // Activate Feature register
    if (!readRegVal(RFM70_REG_FEATURE)) {
        writeRegPgmBuf((uint8_t *) RFM70_cmd_activate, sizeof(RFM70_cmd_activate));
    }

    // Now set Registers 1D and 1C
    writeRegVal(pgm_read_byte(&RFM70_bank0Init[22][0]), pgm_read_byte(&RFM70_bank0Init[22][1]));
    writeRegVal(pgm_read_byte(&RFM70_bank0Init[21][0]), pgm_read_byte(&RFM70_bank0Init[21][1]));

    // Init bank 1 registers
    selectBank(1);

    for (int i = 0; i < 14; i++) {
        writeRegPgmBuf((uint8_t *) RFM70_bank1Init[i], sizeof(RFM70_bank1Init[i]));
    }

    // set ramp curve
    writeRegPgmBuf((uint8_t *) RFM70_bank1R0EInit, sizeof(RFM70_bank1R0EInit));

    // do we have to toggle some bits here like in the example code?
    writeRegPgmBuf((uint8_t *) RFM70_cmd_tog1, sizeof(RFM70_cmd_tog1));
    writeRegPgmBuf((uint8_t *) RFM70_cmd_tog2, sizeof(RFM70_cmd_tog2));

    delayMs(RFM70_END_INIT_WAIT_MS);

    //Check the ChipID
    if (readRegVal(0x08) != 0x63) {
        debug(RFM70_DEBUG_WRONG_CHIP_ID);
    }

    selectBank(0);
    setModeRX();
}
void Adafruit_IS31FL3731::writeRegister8(uint8_t b, uint8_t reg, uint8_t data) {
  selectBank(b);

  Wire.beginTransmission(_i2caddr);
  Wire.write((byte)reg);
  Wire.write((byte)data);
  Wire.endTransmission();
  //Serial.print("$"); Serial.print(reg, HEX);
  //Serial.print(" = 0x"); Serial.println(data, HEX);
}
Esempio n. 5
0
void RFM70::debug(uint8_t token) {
        // to be done
        int i;
        switch(token){
        case RFM70_DEBUG_WRONG_CHIP_ID:
                DBG(("Wrong chip ID !"));
                return;
        case RFM70_DEBUG_FIFO_FULL:
                DBG(("FIFO full !"));
                return;
        case RFM70_SHOW_REGISTERS:
                selectBank(0);
		printf("select bank 0\n");
                for(i=0; i<10; i++)
                {
                        DBG(("%x", i));
                        DBG(("= "));
                        DBG(("%x", readRegVal(i)));
                        DBG((", "));
                }
                selectBank(1);
		printf("select bank 1\n");
                DBG(("\n"));
                for(i=0; i<10; i++)
                {
                        DBG(("[reg 0x%02x]", i));
                        DBG(("= "));
                        DBG(("0x%02x", readRegVal(i)));
                        DBG((", "));
                }
		printf("select bank 0\n");
                selectBank(0);
                DBG(("\n"));
                DBG(("[reg 0x17]"));
                DBG(("= "));
                DBG(("0x%02x", readRegVal(0x17)));
                DBG((", carrier: "));
                DBG(("0x%02x", getCarrierDetect()));
                DBG(("\n"));
                return;
        }
}
void Adafruit_IS31FL3731::clear(void) {
  // all LEDs on & 0 PWM

  selectBank(_frame);

  for (uint8_t i=0; i<6; i++) {
    Wire.beginTransmission(_i2caddr);
    Wire.write((byte) 0x24+i*24);
    // write 24 bytes at once
    for (uint8_t j=0; j<24; j++) {
      Wire.write((byte) 0);
    }
    Wire.endTransmission();
  }
}
uint8_t  Adafruit_IS31FL3731::readRegister8(uint8_t bank, uint8_t reg) {
 uint8_t x;

 selectBank(bank);

 Wire.beginTransmission(_i2caddr);
 Wire.write((byte)reg);
 Wire.endTransmission();

 Wire.beginTransmission(_i2caddr);
 Wire.requestFrom(_i2caddr, (byte)1);
 x = Wire.read();
 Wire.endTransmission();

// Serial.print("$"); Serial.print(reg, HEX);
//  Serial.print(": 0x"); Serial.println(x, HEX);

  return x;
}
Esempio n. 8
0
void main(void) {
    // Disable Interrupts
    INTCONbits.GIE = 0;

    // Clear PORTs
    PORTA = 0;
    PORTB = 0;
    PORTC = 0;

    // Switch to bank 1
    selectBank(0, 1);

    // Disable ADC
    ADCON1 = 0x06;

    // Disable comparator
    CMCONbits.CM0 = 1;
    CMCONbits.CM1 = 1;
    CMCONbits.CM2 = 1;

    // Disable T0CKI pin
    OPTION_REGbits.T0CS = 0;

    // set PORT directions
    TRISA = 0;                    // Set all to output
    TRISB = 0;
    TRISC = 0;

    // INT pin input
    //TRISBbits.TRISB0 = 1;

    // RS-232 input
    RX_PIN_DIR = 1;

    // configure UART
    TXSTAbits.TXEN = 0;         // disable UART transmit
    TXSTAbits.SYNC = 0;         // asynchrous
    TXSTAbits.BRGH = 1;         // high-baud-rate
    SPBRG = 25;                 // 9600 baud at 4MHz

    // configure SPI port
    SSPSTATbits.CKE = 1;        // transmit on transition from active to idle
    
    // Enable RX interrupt
    PIE1bits.RCIE = 1;

    // Switch to bank 0
    selectBank(0, 0);

    // Clear PORTs
    PORTA = 0;
    PORTB = 0;
    PORTC = 0;

    // Enable UART
    RCSTAbits.RX9 = 0;          // 8-bit reception
    RCSTAbits.ADDEN = 0;        // disable address select
    RCSTAbits.SPEN = 1;         // enable serial port
    RCSTAbits.CREN = 1;         // enable continuous receive

    // Enable SPI port
    SSPCONbits.CKP = 0;         // idle state for clock is 0
    SSPCONbits.SSPM = 0b0010;   // clock = Fosc/64
    SSPCONbits.SSPEN = 1;       // enable SPI port

    // Enable peripheral interrupt
    INTCONbits.PEIE = 1;
    PIR1bits.RCIF = 0;

    // Disable other interrupts
    INTCONbits.INTE = 1;        // external interrupt
    INTCONbits.INTF = 0;
    INTCONbits.TMR0IE = 0;      // timer interrupt
    INTCONbits.RBIE = 0;        // PORTB change interrupt
    
    // Enable PWM output
    PR2 = 0xFF;                                     // PWM period
    CCPR1L = 204;                                   // duty cycle MSB ~80%
    CCP1CONbits.CCP1X = CCP1CONbits.CCP1Y = 0;      // duty cycle LSB
    T2CON = 0;                                      // configure timer
    T2CONbits.T2CKPS1 = 0;                          // prescaler 8
    T2CONbits.T2CKPS0 = 1;
    T2CONbits.TMR2ON = 1;
    CCP1CONbits.CCP1M3 = CCP1CONbits.CCP1M2 = 1;    // PWM mode
    
    // TX zeros to shift registers
    //SSPBUF = 0;
    //SSPBUF = 0;
    
    // Enable Interrupts
    INTCONbits.GIE = 1;

    // Main Loop
    while(1) {
        // Heartbeat
        heartbeat++;
        if(heartbeat == 200) {
            DEBUG_PIN = ~DEBUG_PIN;
            heartbeat = 0;
        }
        
        countDelay(128);
    }
}
Esempio n. 9
0
/**
 * Extra options for the DS2432
 *
 * bank    the memory bank to be used.
 * portnum port number for the device
 * SNum    The serial number for the chosen device.
 *
 * @return numeric value entered from the console.
 */
SMALLINT optionSHAEE(SMALLINT bank, int portnum, uchar *SNum)
{
   int done      = FALSE;
   int try_again = FALSE;
   int addr,len;
   uchar data[64];
   int i;

   do
   {
      switch(bank)
      {
         case 0: case 1: case 2: case 3:
            done = TRUE;
            break;

         case 4:   // Load First Secret
            printf("Enter the address for loading first secret: ");
            addr = getNumber(0, 152);

            printf("Enter the Load First Secret data: ");
            if(menuSelect(ENTRY_MENU,SNum) == MODE_TEXT)
            	len = getData(data,MAX_LEN,MODE_TEXT);
            else
            	len = getData(data,MAX_LEN,MODE_HEX);

            if(!loadFirstSecret(portnum,addr,SNum,&data[0],len))
               OWERROR_DUMP(stderr);
            break;

         case 5:   // Compute Next Secret
            printf("Enter the address for computing next secret: ");
            addr = getNumber(0,128);

            if(!computeNextSecret(portnum,addr,SNum,&data[0]))
               OWERROR_DUMP(stderr);

            printf("The new secret is: ");
            for(i=0;i<8;i++)
               printf("%02X ",data[i]);
            printf("\n");
            break;

         case 6:   // Change Bus Master Secret
            printf("Enter the new Bus Master Secret: ");

            try_again = FALSE;

            do
            {
            	if(menuSelect(ENTRY_MENU,SNum) == MODE_TEXT)
            		len = getData(data,MAX_LEN,MODE_TEXT);
            	else
            		len = getData(data,MAX_LEN,MODE_HEX);

               if(len != 8)
               {
                  printf("The secret is 8 bytes long try again: ");
                  try_again = TRUE;
               }
               else
                  try_again = FALSE;
            }
            while(try_again);

            setBusMasterSecret(&data[0]);
            break;

         case 7:   // Lock Secret
            data[0] = 0xAA;

            if(!bankWriteBlock(3,portnum,SNum,8,data,1))
            {
               OWERROR_DUMP(stderr);
               break;
            }
            break;

         case 8:   // Input new challenge for Read Authenticate
            printf("Enter the New Challenge: ");

            try_again = FALSE;

            do
            {
            	if(menuSelect(ENTRY_MENU,SNum) == MODE_TEXT)
            		len = getData(data,MAX_LEN,MODE_TEXT);
            	else
            		len = getData(data,MAX_LEN,MODE_HEX);

               if(len != 8)
               {
                  printf("The challenge is 8 bytes long try again: ");
                  try_again = TRUE;
               }
               else
                  try_again = FALSE;
            }
            while(try_again);

            setChallenge(&data[0]);
            break;

         case 9:   // Write Protect page 0-3
            data[0] = 0x00;

            if(!bankWriteBlock(3,portnum,SNum,9,data,1))
            {
               OWERROR_DUMP(stderr);
               break;
            }
            break;

         case 10:  // Set Page 1 to EEPROM mode
            data[0] = 0xAA;

            for(i=5;i<8;i++)
               data[i] = 0x00;

            if(!bankWriteBlock(3,portnum,SNum,12,data,1))
            {
            OWERROR_DUMP(stderr);
            break;
            }
            break;

         case 11:  // Write Protect Page 0
            data[0] = 0xAA;

            if(!bankWriteBlock(3,portnum,SNum,13,data,1))
            {
               OWERROR_DUMP(stderr);
               break;
            }
            break;

         case 12:  // Print Current Bus Master Secret
            returnBusMasterSecret(&data[0]);

            printf("The current Bus Master Secret is:  ");
            for(i=0;i<8;i++)
               printf("%02X ",data[i]);
            printf("\n");
            break;

         default:
            done = TRUE;
            break;
      }

      if(!done)
      {
         printf("\n");
         bank = selectBank(bank, SNum);
      }
   }
   while(!done);

   return bank;

}
Esempio n. 10
0
int main(int argc, char **argv)
{
   int len, addr, page, answer, i;
   int done      = FALSE;
   SMALLINT  bank = 1;
   uchar     data[552];
   int portnum = 0;
   uchar AllSN[MAXDEVICES][8];
   int NumDevices;
   int owd;
   char msg[132];


      // check for required port name
   if (argc != 2)
   {
      sprintf(msg,"1-Wire Net name required on command line!\n"
                  " (example: \"COM1\" (Win32 DS2480),\"/dev/cua0\" "
                  "(Linux DS2480),\"{1,5}\" (Win32 TMEX)\n");
      printf("%s\n",msg);
      return 0;
   }

   printf("\n1-Wire Memory utility console application Version 0.01\n");

   if((portnum = owAcquireEx(argv[1])) < 0)
   {
      OWERROR_DUMP(stdout);
      return 0;
   }
   else
   {
      // loop to do menu
      do
      {

         // Main menu
         switch (menuSelect(MAIN_MENU,&AllSN[0][0]))
         {

            case MAIN_SELECT_DEVICE :

               // find all parts
               // loop to find all of the devices up to MAXDEVICES
               NumDevices = 0;
               do
               {
                  // perform the search
                  if (!owNext(portnum,TRUE, FALSE))
                     break;

                  owSerialNum(portnum,AllSN[NumDevices], TRUE);
                  NumDevices++;
               }
               while (NumDevices < (MAXDEVICES - 1));

               /* for test devices without a serial number
               if(NumDevices == 0)
               {
                  for(i=0;i<8;i++)
                     AllSN[0][i] = 0x00;
                  NumDevices++;
               }*/

               // select a device
               owd = selectDevice(NumDevices,&AllSN[0]);

               // display device info
               printDeviceInfo(portnum,&AllSN[owd][0]);

               // select a bank
               bank = selectBank(bank, &AllSN[owd][0]);

               if((AllSN[owd][0] == 0x33) || (AllSN[owd][0] == 0xB3))
                  bank = optionSHAEE(bank,portnum,&AllSN[owd][0]);

               // display bank information
               displayBankInformation(bank,portnum,&AllSN[owd][0]);

               // loop on bank menu
               do
               {
                  switch (menuSelect(BANK_MENU,&AllSN[owd][0]))
                  {

                     case BANK_INFO :
                        // display bank information
                        displayBankInformation(bank,portnum,&AllSN[owd][0]);
                        break;

                     case BANK_READ_BLOCK :
                        // read a block
                        printf("Enter the address to start reading: ");
                        addr = getNumber(0, (owGetSize(bank,&AllSN[owd][0])-1));
                        printf("\n");

                        printf("Enter the length of data to read: ");
                        len = getNumber(0, owGetSize(bank, &AllSN[owd][0]));
                        printf("\n");

                        if(!dumpBankBlock(bank,portnum,&AllSN[owd][0],addr,len))
                           OWERROR_DUMP(stderr);
                        break;

                     case BANK_READ_PAGE :
                        printf("Enter the page number to read:  ");

                        page = getNumber(0, (owGetNumberPages(bank,&AllSN[owd][0])-1));

                        printf("\n");

                        if(!dumpBankPage(bank,portnum,&AllSN[owd][0],page))
                           OWERROR_DUMP(stderr);

                        break;

                     case BANK_READ_UDP :
                        printf("Enter the page number to read: ");

                        page = getNumber(0, (owGetNumberPages(bank,&AllSN[owd][0])-1));

                        printf("\n");

                        if(!dumpBankPagePacket(bank,portnum,&AllSN[owd][0],page))
                           OWERROR_DUMP(stderr);
                        break;

                     case BANK_WRITE_BLOCK :
                        // write a block
                        printf("Enter the address to start writing: ");

                        addr = getNumber(0, (owGetSize(bank,&AllSN[owd][0])-1));

            				if(menuSelect(ENTRY_MENU,&AllSN[owd][0]) == MODE_TEXT)
            					len = getData(data,MAX_LEN,MODE_TEXT);
            				else
            					len = getData(data,MAX_LEN,MODE_HEX);

                        if(!bankWriteBlock(bank,portnum,&AllSN[owd][0],addr,data,len))
                        {
                           OWERROR_DUMP(stderr);
                           break;
                        }

                        if(owCanRedirectPage(bank,&AllSN[owd][0]))
                        {
                           printf("Enter if you want to redirect page (0 no, 1 yes): ");

                           answer = getNumber(0,1);

                           if(answer)
                           {
                              printf("What page would you like to redirect:");

                              page = getNumber(0,255);

                              printf("Where would you like to redirect:");

                              addr = getNumber(0,255);

                              if(!redirectPage(bank,portnum,&AllSN[owd][0],page,addr))
                              {
                                 OWERROR_DUMP(stderr);
                                 break;
                              }
                           }
                        }

                        if(owCanLockPage(bank,&AllSN[owd][0]))
                        {
                           printf("Enter if you want to lock page (0 no, 1 yes):");

                           answer = getNumber(0,1);

                           if(answer)
                           {
                              printf("What page would you like to lock?");

                              page = getNumber(0,255);

                              if(!lockPage(bank,portnum,&AllSN[owd][0],page))
                              {
                                 OWERROR_DUMP(stderr);
                                 break;
                              }
                           }
                        }

                        if(owCanLockRedirectPage(bank,&AllSN[owd][0]))
                        {
                           printf("Enter if you want to lock redirected page (0 no, 1 yes):");

                           answer = getNumber(0,1);

                           if(answer)
                           {
                              printf("Which redirected page do you want to lock:");

                              page = getNumber(0,255);

                              if(!lockRedirectPage(bank,portnum,&AllSN[owd][0],page))
                              {
                                 OWERROR_DUMP(stderr);
                                 break;
                              }
                           }
                        }
                        break;

                     case BANK_WRITE_UDP :
                        printf("Enter the page number to write a UDP to: ");

                        page = getNumber(0, (owGetNumberPages(bank,&AllSN[owd][0])-1));

            				if(menuSelect(ENTRY_MENU,&AllSN[owd][0]) == MODE_TEXT)
            					len = getData(data,MAX_LEN,MODE_TEXT);
            				else
            					len = getData(data,MAX_LEN,MODE_HEX);

                        if(!bankWritePacket(bank,portnum,&AllSN[owd][0],page,data,len))
                           OWERROR_DUMP(stderr);
                        break;

                     case BANK_BM_READ_PASS:
                        printf("Enter the 8 byte read only password if less 0x00 will be filled in.");

            				if(menuSelect(ENTRY_MENU,&AllSN[owd][0]) == MODE_TEXT)
            					len = getData(data,8,MODE_TEXT);
            				else
            					len = getData(data,8,MODE_HEX);

                        if(len != 8)
                        {
                           for(i=len;i<8;i++)
                              data[i] = 0x00;
                        }

                        if(!owSetBMReadOnlyPassword(portnum,&AllSN[owd][0],data))
                           OWERROR_DUMP(stderr);

                        break;

                     case BANK_BM_RW_PASS:
                        printf("Enter the 8 byte read/write password if less 0x00 will be filled in.");

            				if(menuSelect(ENTRY_MENU,&AllSN[owd][0]) == MODE_TEXT)
            					len = getData(data,8,MODE_TEXT);
            				else
            					len = getData(data,8,MODE_HEX);

                        if(len != 8)
                        {
                           for(i=len;i<8;i++)
                              data[i] = 0x00;
                        }

                        if(!owSetBMReadWritePassword(portnum,&AllSN[owd][0],data))
                           OWERROR_DUMP(stderr);

                        break;

                     case BANK_READ_PASS:
                        printf("Enter the 8 byte read only password if less 0x00 will be filled in.");

            				if(menuSelect(ENTRY_MENU,&AllSN[owd][0]) == MODE_TEXT)
            					len = getData(data,8,MODE_TEXT);
            				else
            					len = getData(data,8,MODE_HEX);

                        if(len != 8)
                        {
                           for(i=len;i<8;i++)
                              data[i] = 0x00;
                        }

                        if(!owSetReadOnlyPassword(portnum,&AllSN[owd][0],data))
                           OWERROR_DUMP(stderr);

                        break;

                     case BANK_RW_PASS:
                        printf("Enter the 8 byte read/write password if less 0x00 will be filled in.");

            				if(menuSelect(ENTRY_MENU,&AllSN[owd][0]) == MODE_TEXT)
            					len = getData(data,8,MODE_TEXT);
            				else
            					len = getData(data,8,MODE_HEX);

                        if(len != 8)
                        {
                           for(i=len;i<8;i++)
                              data[i] = 0x00;
                        }

                        if(!owSetReadWritePassword(portnum,&AllSN[owd][0],data))
                           OWERROR_DUMP(stderr);

                        break;

                     case BANK_ENABLE_PASS:
                        if(!owSetPasswordMode(portnum,&AllSN[owd][0],ENABLE_PSW))
                           OWERROR_DUMP(stderr);
                        break;

                     case BANK_DISABLE_PASS:
                        if(!owSetPasswordMode(portnum,&AllSN[owd][0],DISABLE_PSW))
                           OWERROR_DUMP(stderr);
                        break;

                     case BANK_NEW_BANK :
                        // select a bank
                        bank = selectBank(bank,&AllSN[owd][0]);

                        if((AllSN[owd][0] == 0x33) || (AllSN[owd][0] == 0xB3))
                           bank = optionSHAEE(bank,portnum,&AllSN[owd][0]);

                        // display bank information
                        displayBankInformation(bank,portnum,&AllSN[owd][0]);
                        break;

                     case BANK_MAIN_MENU :
                        done = TRUE;
                        break;
                  }
               }
               while (!done);

               done = FALSE;
               break;

            case MAIN_QUIT :
               done = TRUE;
               break;

         }  // Main menu switch
      }
      while (!done);  // loop to do menu

      owRelease(portnum);
   }  // else for owAcquire

   return 1;
}
Esempio n. 11
0
bool RFM75_initRegisters()
{
	// init bank 0 registers
	selectBank(0);

	// !! The last two regs in the bank0Init list will be handled later
	for (int i = 0; i < 20; i++){
		writeRegVal(RFM75_bank0Init[i][0],
				RFM75_bank0Init[i][1]);
	}

	// init address registers in bank 0
	writeRegPgmBuf((uint8_t *)RFM75_cmd_adrRX0, sizeof(RFM75_cmd_adrRX0));
	writeRegPgmBuf((uint8_t *)RFM75_cmd_adrRX1, sizeof(RFM75_cmd_adrRX1));
	writeRegPgmBuf((uint8_t *)RFM75_cmd_adrTX, sizeof(RFM75_cmd_adrTX));

	// activate Feature register
	if(!readRegVal(RFM7x_REG_FEATURE)){
		writeRegPgmBuf((uint8_t *)RFM75_cmd_activate, sizeof(RFM75_cmd_activate));
	}

	// now set Registers 1D and 1C
	writeRegVal(RFM75_bank0Init[22][0],
			RFM75_bank0Init[22][1]);
	writeRegVal(RFM75_bank0Init[21][0],
			RFM75_bank0Init[21][1]);

	// init bank 1 registers
	selectBank(1);

	for (int i=0; i < 14; i++){
		writeRegPgmBuf((uint8_t *)RFM7x_bank1Init[i], sizeof(RFM7x_bank1Init[i]));
	}

	// set ramp curve
	writeRegPgmBuf((uint8_t *)RFM7x_bank1R0EInit, sizeof(RFM7x_bank1R0EInit));

	// do we have to toggle some bits here like in the example code?
	writeRegPgmBuf((uint8_t *)RFM75_cmd_tog1, sizeof(RFM75_cmd_tog1));
	writeRegPgmBuf((uint8_t *)RFM75_cmd_tog2, sizeof(RFM75_cmd_tog2));

	delay_ms(50);

	selectBank(0);
	RFM75_setModeRX();

	delay_ms(5);
	selectBank(1);
	delay_ms(5);

	//Check the ChipID
	uint8_t ID;
	ID = readRegVal(0x08);
	if(ID != 0x63)
	{
		return false;
	}

	selectBank(0);

	return true;
}