Go Down

Topic: 'mask' was not declared in this scope" error (Read 2441 times) previous topic - next topic

zoomkat

While attempting to compile X10 Firecracker testl code below, I receive an  X10 Firecracker.ccp error "\X10Firecracker.cpp:134: error: 'mask' was not declared in this scope". This would appear to originate in the bottom X10 Firecracker.ccp code. Any ideas why this is occurring? 

http://playground.arduino.cc/X10/CM17A

Code: [Select]

/* Arduino Interface to the CM17A Wireless X10 dongle. BroHogan 7/19/08
* Arduino Library Conversion by DaveK AC0KG  Dec/08
* The CM17A gets it power and data using only the RTS, CTS, & Gnd lines.
* CONNECTION: RTS -> DB9 pin 7.  DTR -> DB9 pin 4. Gnd. -> DB9 pin 5.
* See X10Firecracker.cpp in your libraries folder for more details
*/

#include <X10Firecracker.h>

#define RTS_PIN     2                 // RTS line for C17A - DB9 pin 7
#define DTR_PIN     3                 // DTR line for C17A - DB9 pin 4
#define BIT_DELAY   1                   // mS delay between bits (1 mS OK)

void setup()
{
  X10.init(RTS_PIN, DTR_PIN, BIT_DELAY);  //
}

void Test()
{
  X10.sendCmd( hcA, 2, cmdOn );
  X10.sendCmd( hcA, 2, cmdDim );
  X10.sendCmd( hcA, 2, cmdDim );
  X10.sendCmd( hcA, 2, cmdDim );
  X10.sendCmd( hcA, 2, cmdDim );
  X10.sendCmd( hcA, 2, cmdDim );
  X10.sendCmd( hcA, 2, cmdBright );
  X10.sendCmd( hcA, 2, cmdBright );
  X10.sendCmd( hcA, 2, cmdBright );
  X10.sendCmd( hcA, 2, cmdBright );
  X10.sendCmd( hcA, 2, cmdBright );
  X10.sendCmd( hcA, 2, cmdOff );
}

void loop()
{
  delay(2000);
  Test();
  delay(8000);
}


X10 Firecracker.ccp
Code: [Select]

/* Arduino Interface to the CM17A Wireless X10 dongle. BroHogan 7/19/08
* Arduino Library Conversion by DaveK AC0KG
*
* The CM17A gets it power and data using only the RTS, CTS, & Gnd lines.
* A MAX232 is not req. (0/+5V work OK) If MAX232 IS used reverse all HIGHs & LOWS
* Signal      RTS DTR        Standby | '1' | Wait | '0' | Wait | '1' | Wait...
* Reset        0   0         _____________________       _____________________
* Logical '1'  1   0   RTS _|                     |_____|
* Logical '0'  0   1         ________       ___________________       ________
* Standby      1   1   DTR _|        |_____|                   |_____|
*
* MINIMUM time for the '1', '0' and 'Wait' states is 0.5ms.
*
* At least one signal must be high to keep CM17A powered while transmitting.
*
* Each xmit is 40 bits -> "Header" 16 bits,  "Data" 16 bits, "Footer" 8 bits
*
* CONNECTION: RTS -> DB9 pin 7 
*             DTR -> DB9 pin 4
*             Gnd -> DB9 pin 5
*/

#include <avr/pgmspace.h>
#include "wiring.h"

#include "X10Firecracker.h"

// An instance of the EventFuse class
X10Firecracker X10 = X10Firecracker();

// This will generate a warning "only initialized variables can
// be placed into program memory area". Apparently this is a compiler
// bug, can't do much about it.
prog_uint16_t houseCode[] PROGMEM = {
0x6000,  // A
0x7000,  // B
0x4000,  // C
0x5000,  // D
0x8000,  // E
0x9000,  // F
0xA000,  // G
0xB000,  // H
0xE000,  // I
0xF000,  // J
0xC000,  // K
0xD000,  // L
0x0000,  // M
0x1000,  // N
0x2000,  // O
0x3000,  // P
};

// This will generate a warning "only initialized variables can
// be placed into program memory area". Apparently this is a compiler
// bug, can't do much about it.
prog_uint16_t deviceCode[] PROGMEM = {
0x0000,  // 1
0x0010,  // 2
0x0008,  // 3
0x0018,  // 4
0x0040,  // 5
0x0050,  // 6
0x0048,  // 7
0x0058,  // 8
0x0400,  // 9
0x0410,  // 10
0x0408,  // 11
0x0418,  // 12
0x0440,  // 13
0x0450,  // 14
0x0448,  // 15
0x0458,  // 16
};

// This will generate a warning "only initialized variables can
// be placed into program memory area". Apparently this is a compiler
// bug, can't do much about it.
prog_uint16_t cmndCode[] PROGMEM = {
0x0000,  // cmdOn
0x0020,  // cmdOff
0x0088,  // 20% cmdBright (0x00A8=5%)
0x0098,  // 20% cmdDim    (0x00B8=5%)
};


X10Firecracker::X10Firecracker()
{
}

void X10Firecracker::init( int _RTS_Pin, int _DTR_Pin, int _Bit_Delay )
{
RTS_pin = _RTS_Pin;
DTR_pin = _DTR_Pin;
Bit_delay = _Bit_Delay;

pinMode(RTS_pin, OUTPUT);             // RTS -> DB9 pin 7
pinMode(DTR_pin, OUTPUT);             // DTR -> DB9 pin 4
}

void X10Firecracker::sendCmd(HouseCode house, int device, CommandCode cmnd)
{
unsigned int dataBuff = 0;
byte messageBuff[5];

// Build message by ORing the parts together. No device if Bright or Dim,
// the bright and dim codes operate on the last-addressed device
if ( (cmnd == cmdOn) | (cmnd == cmdOff) )
{
dataBuff =  pgm_read_word_near( houseCode  + house      )
          | pgm_read_word_near( deviceCode + (device-1) )
  | pgm_read_word_near( cmndCode   + cmnd       );
} else {
dataBuff =  pgm_read_word_near( houseCode  + house )
          | pgm_read_word_near( cmndCode   + cmnd  );
}

// Build a string for the whole message
messageBuff[0] = 0xD5;               // Header byte 0 11010101 = 0xD5
messageBuff[1] = 0xAA;               // Header byte 1 10101010 = 0xAA
messageBuff[2] = dataBuff >> 8;      // MSB of dataBuff
messageBuff[3] = dataBuff & 0xFF;    // LSB of dataBuff
messageBuff[4] = 0xAD;               // Footer byte 10101101 = 0xAD

// Now send it out to CM17A
digitalWrite(DTR_pin, LOW); // reset device - both low is power off
digitalWrite(RTS_pin, LOW);
delay(Bit_delay);

digitalWrite(DTR_pin, HIGH); // standby mode - supply power
digitalWrite(RTS_pin, HIGH);
delay(35);                   // need extra time for it to settle

for (byte i=0; i<5; i++){
for( byte mask = 0x80; mask; mask >>=1 )
{
if( mask & messageBuff[i] )
digitalWrite(DTR_pin, LOW);   // 1 = RTS HIGH/DTR-LOW
else
digitalWrite(RTS_pin, LOW);   // 0 = DTR-HIGH/RTS-LOW
delay(Bit_delay);                 // delay between bits

digitalWrite(DTR_pin,HIGH);       // wait state between bits
digitalWrite(RTS_pin,HIGH);
delay(Bit_delay);

}
delay(1000);                          // wait required before next xmit
}
Google forum search: Use Google Advanced Search and use Http://forum.arduino.cc/index in the "site or domain:" box.

PaulS

Can this file:
Code: [Select]
#include "wiring.h"
actually be found?

Try changing that to Arduino.h, since you are probably not using a wiring board.

zoomkat

Thanks PaulS, the code now compiles! Now to wire up the firecracker.
Google forum search: Use Google Advanced Search and use Http://forum.arduino.cc/index in the "site or domain:" box.

Go Up