Esempio n. 1
0
bool ObjIeeeAscii::GetOffset(const char *buffer, eParseType ParseType)
{
    if (!file)
        ThrowSyntax(buffer, ParseType);
    int pos =3 ;
    char ch = buffer[2];
    int index = 0;
    if (ch != 'G')
        index = ObjUtil::FromHex(buffer, &pos);
    if (buffer[pos++] != ',')
        ThrowSyntax(buffer, ParseType);
    ObjExpression *exp = GetExpression(buffer, &pos);
    CheckTerm(buffer + pos);
    switch(ch)
    {
        case 'G':
            SetStartAddress(file, exp);
            break;
        case 'S':
        {
            ObjSection *sect = GetSection(index);
            if (!sect)
                ThrowSyntax(buffer, ParseType);
            sect->SetSize(exp);
            break;
        }
        case 'L':
        {
            ObjSection *sect = GetSection(index);
            if (!sect)
                ThrowSyntax(buffer, ParseType);
            sect->SetOffset(exp);
            break;
        }
        default:
        {
            ObjSymbol *sym = FindSymbol(ch, index);
            if (!sym)
                ThrowSyntax(buffer, ParseType);
            sym->SetOffset(exp);
            break;
        }
    }		
    return false;
}
Esempio n. 2
0
/**
 * Check if the settings are valid and if not initialize them
 */
void WidgetSettingsClass::Init() {
  int magic_number = ReadInt(MAGIC_NUMBER_OFFSET);

  if (magic_number != MAGIC_NUMBER) {
    // init the settings
    WriteInt(MAGIC_NUMBER_OFFSET, MAGIC_NUMBER);
    SetStartAddress(1);
    SetEstaId(0x7a70);
    SetSerialNumber(DEFAULT_SERIAL_NUMBER);
    SetDeviceLabel(DEFAULT_LABEL, sizeof(DEFAULT_LABEL));
    SetDevicePowerCycles(0);
    SaveSensorValue(0);
    SetPersonality(1);
  } else {
    m_start_address = ReadInt(START_ADDRESS_OFFSET);
    m_personality = EEPROM.read(DMX_PERSONALITY_VALUE);
  }
  IncrementDevicePowerCycles();
}