private void setDefaultsForCardTtype(string cardType, Hashtable propertyIdxHashtable) { //Debug.Print("setDefaultsForCardTtype"); switch (cardType) { case I2cMessages.CARDTYPE_TOGGLE: case I2cMessages.CARDTYPE_INPUT: case I2cMessages.CARDTYPE_SLIDER: case I2cMessages.CARDTYPE_BUTTON: return; case I2cMessages.CARDTYPE_TEXT: propertyIdxHashtable.AddOrUpdate(VizJsonKeys.UNITS, JsonValues.TEXT_STATUS); return; case I2cMessages.CARDTYPE_CHART_DONUT: propertyIdxHashtable.AddOrUpdate(VizJsonKeys.TOTAL, JsonValues.CHART_DONUT_TOTAL); propertyIdxHashtable.AddOrUpdate(VizJsonKeys.UNITS, JsonValues.CHART_DONUT_UNITS); propertyIdxHashtable.AddOrUpdate(VizJsonKeys.VALUES, new ArrayList()); var leafHashtable1 = new Hashtable(); leafHashtable1.AddOrUpdate(HashtableKeys.NAME, VizJsonKeys.LABELS); leafHashtable1.AddOrUpdate(HashtableKeys.VALUE, JsonValues.CHART_DONUT_VALUE_LABELS); ((ArrayList)propertyIdxHashtable[VizJsonKeys.VALUES]).Add(leafHashtable1); var leafHashtable2 = new Hashtable(); leafHashtable2.AddOrUpdate(HashtableKeys.NAME, VizJsonKeys.SERIES); leafHashtable2.AddOrUpdate(HashtableKeys.VALUE, JsonValues.CHART_DONUT_VALUE_SERIES); ((ArrayList)propertyIdxHashtable[VizJsonKeys.VALUES]).Add(leafHashtable2); return; case I2cMessages.CARDTYPE_CHART_LINE: propertyIdxHashtable.AddOrUpdate(VizJsonKeys.MAX, 12); propertyIdxHashtable.AddOrUpdate(VizJsonKeys.LOW, 0); propertyIdxHashtable.AddOrUpdate(VizJsonKeys.HIGH, 100); return; } }
private void setMetaOfInterest(Slave slave, Hashtable rootPairs, String i2cName, String value) { switch (i2cName) { case I2cMessages.ASSIM_NAME: slave.name = value; return; case I2cMessages.ASSIM_VERSION: return; case I2cMessages.POWER_DOWN: return; case I2cMessages.PREPARE_MS: return; case I2cMessages.RESPONSE_MS: return; case I2cMessages.VCC_MV: return; case I2cMessages.ASSIM_ROLE: slave.role = value == I2cMessages.SENSOR ? Role.SENSOR : Role.ACTOR; return; case I2cMessages.CLOCK_STRETCH: slave.clock_stretch = Convert.ToInt32(value); return; default: break; // end of base properties } var valueParts = value.Split(':'); var subValueParts = valueParts[1].Split('|'); var idxStr = valueParts[0]; var idx = Convert.ToInt32(idxStr); var propKey = ""; if (!rootPairs.Contains(idxStr)) { rootPairs.Add(idxStr, new Hashtable()); } Hashtable propertyIdxHashtable = ((Hashtable)rootPairs[idxStr]); // property based metadata switch (i2cName) { case I2cMessages.VIZ_CARD_TYPE: value = valueParts[1]; propertyIdxHashtable.AddOrUpdate(VizJsonKeys.CARD_TYPE, value); setDefaultsForCardTtype(value, propertyIdxHashtable); return; case I2cMessages.VIZ_ICONS: propKey = subValueParts[0]; value = subValueParts[1]; if (!propertyIdxHashtable.Contains(VizJsonKeys.ICONS)) { propertyIdxHashtable.Add(VizJsonKeys.ICONS, new ArrayList()); } var leafHashtable = new Hashtable(); leafHashtable.Add(HashtableKeys.NAME, propKey); leafHashtable.Add(HashtableKeys.VALUE, value); ((ArrayList)propertyIdxHashtable[VizJsonKeys.ICONS]).Add(leafHashtable); return; case I2cMessages.VIZ_LABELS: propKey = subValueParts[0]; value = subValueParts[1]; if (!propertyIdxHashtable.Contains(VizJsonKeys.LABELS)) { propertyIdxHashtable.Add(VizJsonKeys.LABELS, new ArrayList()); } var leafHashtable2 = new Hashtable(); leafHashtable2.Add(HashtableKeys.NAME, propKey); leafHashtable2.Add(HashtableKeys.VALUE, value); ((ArrayList)propertyIdxHashtable[VizJsonKeys.LABELS]).Add(leafHashtable2); return; case I2cMessages.VIZ_MIN: value = valueParts[1]; propertyIdxHashtable.AddOrUpdate(VizJsonKeys.MIN, Convert.ToInt32(value)); return; case I2cMessages.VIZ_MAX: value = valueParts[1]; propertyIdxHashtable.AddOrUpdate(VizJsonKeys.MAX, Convert.ToInt32(value)); return; case I2cMessages.VIZ_UNITS: value = valueParts[1]; propertyIdxHashtable.AddOrUpdate(VizJsonKeys.UNITS, value); return; case I2cMessages.VIZ_TOTAL: value = valueParts[1]; propertyIdxHashtable.AddOrUpdate(VizJsonKeys.TOTAL, Convert.ToInt32(value)); return; case I2cMessages.VIZ_VALUES: propKey = subValueParts[0]; value = subValueParts[1]; if (!propertyIdxHashtable.Contains(VizJsonKeys.VALUES)) { propertyIdxHashtable.AddOrUpdate(VizJsonKeys.VALUES, new ArrayList()); } if (((ArrayList)propertyIdxHashtable[VizJsonKeys.VALUES]).Count == 2) { // remove the defaults - ToDo: more robust strategy ((ArrayList)propertyIdxHashtable[VizJsonKeys.VALUES]).RemoveAt(0); ((ArrayList)propertyIdxHashtable[VizJsonKeys.VALUES]).RemoveAt(0); } var leafHashtable3 = new Hashtable(); leafHashtable3.Add(HashtableKeys.NAME, propKey); leafHashtable3.Add(HashtableKeys.VALUE, value); ((ArrayList)propertyIdxHashtable[VizJsonKeys.VALUES]).Add(leafHashtable3); return; case I2cMessages.VIZ_IS_SERIES: value = valueParts[1]; bool valueBool = value == JsonValues.IS_SEREIES_VALUE; propertyIdxHashtable.AddOrUpdate(VizJsonKeys.IS_SERIES, valueBool); if (valueBool) { setDefaultsForCardTtype(I2cMessages.CARDTYPE_CHART_LINE, propertyIdxHashtable); } return; case I2cMessages.VIZ_M_SERIES: return; case I2cMessages.VIZ_HIGH: value = valueParts[1]; propertyIdxHashtable.AddOrUpdate(VizJsonKeys.HIGH, Convert.ToInt32(value)); return; case I2cMessages.VIZ_LOW: value = valueParts[1]; propertyIdxHashtable.AddOrUpdate(VizJsonKeys.LOW, Convert.ToInt32(value)); return; case I2cMessages.VIZ_TOTL_UNIT: value = subValueParts[0]; propertyIdxHashtable.AddOrUpdate(VizJsonKeys.TOTAL, Convert.ToInt32(value)); value = subValueParts[1]; propertyIdxHashtable.AddOrUpdate(VizJsonKeys.UNITS, value); return; } }