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; }
/** * 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(); }