Exemplo n.º 1
0
RobotInterface::DeviceList RobotInterface::XMLReader::Private::readDevicesTag(TiXmlElement *devicesElem)
{
    const std::string &valueStr = devicesElem->ValueStr();

    if (valueStr.compare("devices") != 0) {
        SYNTAX_ERROR(devicesElem->Row()) << "Expected \"devices\". Found" << valueStr;
    }

    std::string filename;
    if (devicesElem->QueryStringAttribute("file", &filename) == TIXML_SUCCESS) {
        // yDebug() << "Found devices file [" << filename << "]";
#ifdef WIN32
        std::replace(filename.begin(), filename.end(), '/', '\\');
        filename = path + "\\" + filename;
#else // WIN32
        filename = path + "/" + filename;
#endif //WIN32
        return readDevicesFile(filename);
    }

    std::string robotName;
    if (devicesElem->QueryStringAttribute("robot", &robotName) != TIXML_SUCCESS) {
        SYNTAX_WARNING(devicesElem->Row()) << "\"devices\" element should contain the \"robot\" attribute";
    }

    if (robotName != robot.name()) {
        SYNTAX_WARNING(devicesElem->Row()) << "Trying to import a file for the wrong robot. Found" << robotName << "instead of" << robot.name();
    }

    unsigned int build;
#if TINYXML_UNSIGNED_INT_BUG
    if (devicesElem->QueryUnsignedAttribute("build", &build()) != TIXML_SUCCESS) {
        // No build attribute. Assuming build="0"
        SYNTAX_WARNING(devicesElem->Row()) << "\"devices\" element should contain the \"build\" attribute [unsigned int]. Assuming 0";
    }
#else
    int tmp;
    if (devicesElem->QueryIntAttribute("build", &tmp) != TIXML_SUCCESS || tmp < 0) {
        // No build attribute. Assuming build="0"
        SYNTAX_WARNING(devicesElem->Row()) << "\"devices\" element should contain the \"build\" attribute [unsigned int]. Assuming 0";
        tmp = 0;
    }
    build = (unsigned)tmp;
#endif

    if (build != robot.build()) {
        SYNTAX_WARNING(devicesElem->Row()) << "Import a file for a different robot build. Found" << build << "instead of" << robot.build();
    }

    DeviceList devices;
    for (TiXmlElement* childElem = devicesElem->FirstChildElement(); childElem != 0; childElem = childElem->NextSiblingElement()) {
        DeviceList childDevices = readDevices(childElem);
        for (DeviceList::const_iterator it = childDevices.begin(); it != childDevices.end(); ++it) {
            devices.push_back(*it);
        }
    }

    return devices;
}
Exemplo n.º 2
0
void Input::update()
{
    for(auto& device : m_devices)
    {
        device->update();
    }
    m_lastInput = readDevices();
}
Exemplo n.º 3
0
// Reads the input file into memory returning 1 if it
// was read unsuccessfully, otherwise 0.
DataSetInitStatus readFile(char* fileName) {
    DataSetInitStatus status = DATA_SET_INIT_STATUS_SUCCESS;

	FILE *inputFilePtr;

	// Open the file and hold on to the pointer.
	inputFilePtr = fopen(fileName, "rb");

	// If the file didn't open return -1.
	if (inputFilePtr == NULL) {
        return DATA_SET_INIT_STATUS_FILE_NOT_FOUND;
	}
	// Read the various data segments if the version is
	// one we can read.
    status = readVersion(inputFilePtr);
    if (status != DATA_SET_INIT_STATUS_SUCCESS) {
        fclose(inputFilePtr);
        return status;
    }
	status = readCopyright(inputFilePtr);
	if (status != DATA_SET_INIT_STATUS_SUCCESS) {
        fclose(inputFilePtr);
        return status;
	}
	status = readStrings(inputFilePtr);
	if (status != DATA_SET_INIT_STATUS_SUCCESS) {
        fclose(inputFilePtr);
        return status;
	}
    status = readProperties(inputFilePtr);
    if (status != DATA_SET_INIT_STATUS_SUCCESS) {
        fclose(inputFilePtr);
        return status;
    }
    status = readDevices(inputFilePtr);
    if (status != DATA_SET_INIT_STATUS_SUCCESS) {
        fclose(inputFilePtr);
        return status;
    }
    status = readLookupList(inputFilePtr);
    if (status != DATA_SET_INIT_STATUS_SUCCESS) {

        fclose(inputFilePtr);
        return status;
    }
	status = readNodes(inputFilePtr);
	if (status != DATA_SET_INIT_STATUS_SUCCESS) {
        fclose(inputFilePtr);
        return status;
    }
	fclose(inputFilePtr);

	return status;
}
Exemplo n.º 4
0
RobotInterface::Robot& RobotInterface::XMLReader::Private::readRobotTag(TiXmlElement *robotElem)
{
    if (robotElem->ValueStr().compare("robot") != 0) {
        SYNTAX_ERROR(robotElem->Row()) << "Root element should be \"robot\". Found" << robotElem->ValueStr();
    }

    if (robotElem->QueryStringAttribute("name", &robot.name()) != TIXML_SUCCESS) {
        SYNTAX_ERROR(robotElem->Row()) << "\"robot\" element should contain the \"name\" attribute";
    }

#if TINYXML_UNSIGNED_INT_BUG
    if (robotElem->QueryUnsignedAttribute("build", &robot.build()) != TIXML_SUCCESS) {
        // No build attribute. Assuming build="0"
        SYNTAX_WARNING(robotElem->Row()) << "\"robot\" element should contain the \"build\" attribute [unsigned int]. Assuming 0";
    }
#else
    int tmp;
    if (robotElem->QueryIntAttribute("build", &tmp) != TIXML_SUCCESS || tmp < 0) {
        // No build attribute. Assuming build="0"
        SYNTAX_WARNING(robotElem->Row()) << "\"robot\" element should contain the \"build\" attribute [unsigned int]. Assuming 0";
        tmp = 0;
    }
    robot.build() = (unsigned)tmp;
#endif

    if (robotElem->QueryStringAttribute("portprefix", &robot.portprefix()) != TIXML_SUCCESS) {
        SYNTAX_WARNING(robotElem->Row()) << "\"robot\" element should contain the \"portprefix\" attribute. Using \"name\" attribute";
        robot.portprefix() = robot.name();
    }

    // yDebug() << "Found robot [" << robot.name() << "] build [" << robot.build() << "] portprefix [" << robot.portprefix() << "]";

    for (TiXmlElement* childElem = robotElem->FirstChildElement(); childElem != 0; childElem = childElem->NextSiblingElement()) {
        if (childElem->ValueStr().compare("device") == 0 || childElem->ValueStr().compare("devices") == 0) {
            DeviceList childDevices = readDevices(childElem);
            for (DeviceList::const_iterator it = childDevices.begin(); it != childDevices.end(); ++it) {
                robot.devices().push_back(*it);
            }
        } else {
            ParamList childParams = readParams(childElem);
            for (ParamList::const_iterator it = childParams.begin(); it != childParams.end(); ++it) {
                robot.params().push_back(*it);
            }
        }
    }

    return robot;
}
Exemplo n.º 5
0
CamView::CamView(QWidget* parent)
   : QMainWindow(parent)
      {
      setupUi(this);

      readDevices();
      QSettings settings;
      QString dname  = settings.value("device", devices.front().shortName).toString();
      for (auto& i : devices) {
            if (i.shortName == dname) {
                  setting.device = &i;
                  break;
                  }
            }
      setting.size = settings.value("size", devices.front().formats.front().size).toSize();
      setting.fps  = settings.value("fps", 30).toInt();

      for (auto& i : devices) {
            devs->addItem(i.name, QVariant::fromValue<CamDevice*>(&i));
            if (i.shortName == dname)
                  devs->setCurrentIndex(devs->count()-1);
            }

      connect(devs,          SIGNAL(activated(int)), SLOT(changeDevice(int)));
      connect(sizes,         SIGNAL(activated(int)), SLOT(changeSize(int)));
      connect(fps,           SIGNAL(activated(int)), SLOT(changeFps(int)));
      connect(cam,           SIGNAL(click(const QString&, int)), statusBar(), SLOT(showMessage(const QString&,int)));
      connect(picturePath,   SIGNAL(textEdited(const QString&)), cam, SLOT(setPicturePath(const QString&)));
      connect(picturePrefix, SIGNAL(textEdited(const QString&)), cam, SLOT(setPicturePrefix(const QString&)));
      connect(click,         SIGNAL(clicked()), cam, SLOT(takeSnapshot()));
      setCam(setting);
      picturePath->setText(cam->picturePath());
      picturePrefix->setText(cam->picturePrefix());

      cam->start();
      }
Exemplo n.º 6
0
void main()
{
   mydevices.numberOfInputs=0;
   mydevices.numberOfOutputs=0;
   clock = 0;
   ledErrorCounter=0;   
   hw_setup();
   //TODO: User Code
   //struct switches array[NUMBER_OF_SWITCHES];
  /*
   button_test();
   dimmer_test();
   */
   
   
   ///////////////SALA//////////////////////////////
 /*  eeprom_on_off_init(20,21,6);//2 int Grande a comecar da esquerda
   eeprom_on_off_init(22,23,0);//2 
   //eeprom_dimmer_init(40,41,42,7);//2
   eeprom_on_off_init(41,42,7);//2
   eeprom_on_off_init(26,27,3);//2
   
   
   
   ///Sanca parede grande
   unsigned int on_adr[8]={20,255,255,255,255,255,255,255};
   unsigned int off_adr[8]={21,255,255,255,255,255,255,255};
   eeprom_onOff_out_init(on_adr,off_adr,3);//Sanca parede grande
   eeprom_onOff_out_init(on_adr,off_adr,5);//Sanca parede grande
   
   ///Sanca parede rosa
   unsigned int on_adrr[8]={22,255,255,255,255,255,255,255};
   unsigned int off_adrr[8]={23,255,255,255,255,255,255,255};
   eeprom_onOff_out_init(on_adrr,off_adrr,7);//Sanca parede grande
   on_adrr[1]=26;
   off_adrr[1]=27;
   eeprom_onOff_out_init(on_adrr,off_adrr,4);//Sanca parede grande
   
    ///VARANDA
   unsigned int dimmer_dim_adr[8]={40,255,255,255,255,255,255,255}; 
   unsigned int dimmer_on_adr[8]={41,255,255,255,255,255,255,255};
   unsigned int dimmer_off_adr[8]={42,255,255,255,255,255,255,255};
   //eeprom_dimmer_out_init(dimmer_dim_adr,dimmer_on_adr,dimmer_off_adr,6);//varanda
   eeprom_onOff_out_init(dimmer_on_adr,dimmer_off_adr,6);//varanda
   
   eeprom_button_init(28,29,4,true);//estores down
   eeprom_button_init(30,31,5,true);//estores up
   unsigned int up_adr[8]={30,255,255,255,255,255,255,255};
   unsigned int down_adr[8]={28,255,255,255,255,255,255,255};
   unsigned int x_adr[8]={255,255,255,255,255,255,255,255};
   eeprom_shutter_out_init(up_adr,down_adr,x_adr,x_adr,8,9,0,10);
   eeprom_shutter_out_init(up_adr,down_adr,x_adr,x_adr,10,11,0,10);
   eeprom_shutter_out_init(up_adr,down_adr,x_adr,x_adr,12,13,0,10);
   eeprom_shutter_out_init(up_adr,down_adr,x_adr,x_adr,14,15,0,10);
   */
   /////////////////////////////////////////////////7
   
   /*
   ///////////////QUARTO GRANDE//////////////////////////////
   eeprom_on_off_init(1,2,2);//2 on_adr off_adr real_button inicia botao
   unsigned int on_adr[8]={1,255,255,255,255,255,255,255};
   unsigned int off_adr[8]={2,10,255,255,255,255,255,255};
 
   unsigned int nill_adr[8]={255,255,255,255,255,255,255,255};  
   unsigned int ventax_off_adr[8]={16,255,255,255,255,255,255,255};

   unsigned int x_adr[8]={1,255,255,255,255,255,255,255};
   eeprom_onOff_out_init(on_adr,off_adr,4);//SANCA?
   
   //outputs 4=sanca 3=casabanho 2=casa de banho 9=ventax 1=corredor
   ///casa de banho
   eeprom_on_off_init(3,4,4);//interruptor casa de banho??  
   off_adr[0]=4;
   on_adr[0]=3;
   eeprom_timer_init(off_adr,on_adr,15,16,time_off,60);
   eeprom_onOff_out_init(on_adr,off_adr,3); //luz casa de banho
   eeprom_onOff_out_init(on_adr,off_adr,2); //luz2 casa de banho
   eeprom_onOff_out_init(on_adr,ventax_off_adr,9);//VENTAX
   ///fim casa de banho
   
   //corredor
   eeprom_on_off_init(17,18,5);//interruptor luz corredor
   unsigned int corredor_on_adr[8]={17,255,255,255,255,255,255,255};
   unsigned int corredor_off_adr[8]={18,255,255,255,255,255,255,255};
   eeprom_onOff_out_init(corredor_on_adr,corredor_off_adr,1); //luz corredor
   //fim corredor
   
   eeprom_button_init(5,6,0,true);//2 //estores
   eeprom_button_init(7,8,1,true);//2
   
   off_adr[0]=255;
   off_adr[1]=255;
   on_adr[0]=5;
   x_adr[0]=7;
   eeprom_shutter_out_init(on_adr,x_adr,off_adr,off_adr,11,10,0,10);//up down fullup full down
   
   eeprom_on_off_init(9,10,6);
   eeprom_on_off_init(20,21,7);
   unsigned int cama_on_adr[8]={9,255,255,255,255,255,255,255};
   unsigned int cama_off_adr[8]={10,255,255,255,255,255,255,255};
   eeprom_onOff_out_init(cama_on_adr,cama_off_adr,7);
   cama_on_adr[0]=20;
   cama_off_adr[0]=21;
   eeprom_onOff_out_init(cama_on_adr,cama_off_adr,6);
   /////////////////////////////////////////////////7
   */ 
   /////////////////////QUARTO RENATA///////////////
   //
   // INPUTS 
   // 0,1 cozinha
   // 2,3 quarto
   //
   // OUTPUTS
   // 5 quarto renata economica
   // 6 janela hologeneo
   // 7 entrada
   // 2 cozinha fluorescente
   // 3 cima balcao halogeneo
   // 4 divisoria halogeneo
   // 10 balcao baixo verde
   // 11 balcao cima verde
   // 12 balcao cima vermelho
   // 13 balcao cima azul
   // 14 balcao baixo azul
   // 15 balcao baixo vermelho
   //INPUT INIT
   eeprom_on_off_init(60,61,0);//on_adr off_adr real_btn interruptor cozinha 1
   eeprom_on_off_init(62,63,1);//on_adr off_adr real_btn interruptor cozinha 2  
// eeprom_dimmer_init(68,62,63,1);//dim_adr on_adr off_adr
   eeprom_on_off_init(64,65,2);//on_adr off_adr real_btn interruptor quarto renata 1
//   eeprom_on_off_init(66,67,3);//on_adr off_adr real_btn interruptor quarto renata 2  
   eeprom_dimmer_init(68,66,67,3);//dim_adr on_adr off_adr
  
   //OUTPUT INIT
   unsigned int on_adr[8]={60,255,255,255,255,255,255,255};
   unsigned int off_adr[8]={61,10,255,255,255,255,255,255};
   unsigned int dim_adr[8]={68,255,255,255,255,255,255,255};
   eeprom_onOff_out_init(on_adr,off_adr,2); //luz cozinha fluorescente
   on_adr[0]=62;
   off_adr[0]=63;
   eeprom_onOff_out_init(on_adr,off_adr,3); //luz cozinha cima balcao halogeneo
   eeprom_onOff_out_init(on_adr,off_adr,4); //luz cozinha divisoria
   eeprom_onOff_out_init(on_adr,off_adr,15); //luz balcao baixo vermelho
   eeprom_onOff_out_init(on_adr,off_adr,12); //luz balcao cima vermelho
   //eeprom_dimmer_out_init(dim_adr,on_adr,off_adr,3); //luz cozinha cima balcao halogeneo
   //eeprom_dimmer_out_init(dim_adr,on_adr,off_adr,4); //luz cozinha divisoria
   //eeprom_dimmer_out_init(dim_adr,on_adr,off_adr,15); //luz cozinha divisoria
   
   on_adr[0]=64;
   off_adr[0]=65;
   eeprom_onOff_out_init(on_adr,off_adr,5); //luz quarto renata economica
   on_adr[0]=66;
   off_adr[0]=67;
  // eeprom_onOff_out_init(on_adr,off_adr,7); //luz quarto renata entrada
  // eeprom_onOff_out_init(on_adr,off_adr,6); //luz quarto renata janela
   eeprom_dimmer_out_init(dim_adr,on_adr,off_adr,7); //luz quarto renata entrada
   eeprom_dimmer_out_init(dim_adr,on_adr,off_adr,6); //luz quarto renata janela
   
  
   readDevices();
#ifdef DEBUG  
    printf("inputs:%d outputs:%d %d %d\n\r",mydevices.numberOfInputs,mydevices.numberOfOutputs,((struct outputs)mydevices.myoutputs[0]).type,((struct outputs)mydevices.myoutputs[1]).type);
#endif
   dimmer_outputs_init();
   // printf("start %Lu %Lu %Lu\n\r",fpointer(N_LUZES,0),delays1[N_LUZES][0],delays2[N_LUZES][0]); 
   /*((struct light)mydevices.myoutputs[0].device).dim_value.value=50;
   ((struct light)mydevices.myoutputs[0].device).dim_value.needs_update=true;
   ((struct light)mydevices.myoutputs[0].device).off.value=1;
   ((struct light)mydevices.myoutputs[0].device).off.needs_update=true;
 */
 
   write_outputs();
// printf("start %Lu\n\r",fpointer(N_LUZES,0)); 
 interrupts_enable();

   while(true){
   restart_wdt();
   if(syncError || oscError)
   {  
      ++ledErrorCounter;
      if(ledErrorCounter>1000)
      {
         output_toggle(LED);
         ledErrorCounter=0;
      }
   }
#ifdef DEBUG
   if(kbhit())
   {
      setup_wdt(WDT_OFF);
      disable_interrupts (GLOBAL) ;
      goDebug();
   }
#endif
   process_outpoints();
   write_outputs();
   if(secondFlag)
   {
      secondFlag=false;
      processTimedEvents();
      if(!syncError && !oscError) output_toggle(LED);
   }
  // print_inputs(false);
  
}
}