Skip to content

Commit

Permalink
helper ruby scripts added
Browse files Browse the repository at this point in the history
  • Loading branch information
Elias Karakoulakis committed Dec 22, 2011
1 parent 350a803 commit cabdac0
Show file tree
Hide file tree
Showing 2 changed files with 123 additions and 0 deletions.
40 changes: 40 additions & 0 deletions ozw-headers.rb
@@ -0,0 +1,40 @@
# a generic Rexegp to parse C/C++ enums, must substitute %s in-place with enumeration name
ENUM_RE = %q(.*
enum \s* %s \s*
\{
([^\{\}]*)
\}\;
)
# and the secondary regexp to parse enumeration items
# e.g. Type_ValueChanged, /**< A node value has been updated from the Z-Wave network. */
ENUM_RE_LINE = /^ \s* ([a-z_]+) (\s*=\s*)* (\d*) .* \/\*\*\< \s (.*) \s \*\/$/ix
# md[1] md[2] md[3] md[4]
# item name = default_index textual_description

def parse_ozw_headers(cpp_src)
notificationtypes, valuegenres, valuetypes = [], [], []
[
[File.join(cpp_src, "Notification.h"), "NotificationType", notificationtypes],
[File.join(cpp_src, "value_classes", "ValueID.h"), "ValueGenre", valuegenres],
[File.join(cpp_src, "value_classes", "ValueID.h"), "ValueType", valuetypes]
].each { | headerfile, enum_name, enum_array |
puts "Parsing #{headerfile} for enum #{enum_name}..."
#~ puts enum_re % enum_name
foo = File.open(headerfile).read
if enum = Regexp.new(ENUM_RE % enum_name, Regexp::EXTENDED | Regexp::IGNORECASE | Regexp::MULTILINE).match(foo) then
index = 0
#~ puts enum[1]
#~ puts '-----------------'
enum[1].each { |line|
if md = ENUM_RE_LINE.match(line) then
#puts md[1..-1].inspect
index = (md[2] and md[3].length > 0) ? md[3].to_i : index+1
key, value = md[1], md[4]
enum_array[index] = [key, value]
#puts "#{enum_name}[#{index}] = [#{key}, #{value}]"
end
}
end
}
return notificationtypes, valuegenres, valuetypes
end
83 changes: 83 additions & 0 deletions zwave-command-classes.rb
@@ -0,0 +1,83 @@
CommandClassesByName = {
:COMMAND_CLASS_VERSION => 0x86,
:COMMAND_CLASS_BATTERY => 0x80,
:COMMAND_CLASS_WAKE_UP => 0x84,
:COMMAND_CLASS_CONTROLLER_REPLICATION => 0x21,
:COMMAND_CLASS_BASIC => 0x20,
:COMMAND_CLASS_SWITCH_MULTILEVEL => 0x26,
:COMMAND_CLASS_SWITCH_ALL => 0x27,
:COMMAND_CLASS_SENSOR_BINARY => 0x30,
:COMMAND_CLASS_SENSOR_MULTILEVEL => 0x31,
:COMMAND_CLASS_ALARM => 0x71,
:COMMAND_CLASS_MULTI_CMD => 0x8F,
:COMMAND_CLASS_CLIMATE_CONTROL_SCHEDULE => 0x46,
:COMMAND_CLASS_CLOCK => 0x81,
:COMMAND_CLASS_ASSOCIATION => 0x85,
:COMMAND_CLASS_CONFIGURATION => 0x70,
:COMMAND_CLASS_MANUFACTURER_SPECIFIC => 0x72,
:COMMAND_CLASS_APPLICATION_STATUS => 0x22,
:COMMAND_CLASS_ASSOCIATION_COMMAND_CONFIGURATION => 0x9B,
:COMMAND_CLASS_AV_CONTENT_DIRECTORY_MD => 0x95,
:COMMAND_CLASS_AV_CONTENT_SEARCH_MD => 0x97,
:COMMAND_CLASS_AV_RENDERER_STATUS => 0x96,
:COMMAND_CLASS_AV_TAGGING_MD => 0x99,
:COMMAND_CLASS_BASIC_WINDOW_COVERING => 0x50,
:COMMAND_CLASS_CHIMNEY_FAN => 0x2A,
:COMMAND_CLASS_COMPOSITE => 0x8D,
:COMMAND_CLASS_DOOR_LOCK => 0x62,
:COMMAND_CLASS_ENERGY_PRODUCTION => 0x90,
:COMMAND_CLASS_FIRMWARE_UPDATE_MD => 0x7a,
:COMMAND_CLASS_GEOGRAPHIC_LOCATION => 0x8C,
:COMMAND_CLASS_GROUPING_NAME => 0x7B,
:COMMAND_CLASS_HAIL => 0x82,
:COMMAND_CLASS_INDICATOR => 0x87,
:COMMAND_CLASS_IP_CONFIGURATION => 0x9A,
:COMMAND_CLASS_LANGUAGE => 0x89,
:COMMAND_CLASS_LOCK => 0x76,
:COMMAND_CLASS_MANUFACTURER_PROPRIETARY => 0x91,
:COMMAND_CLASS_METER_PULSE => 0x35,
:COMMAND_CLASS_METER => 0x32,
:COMMAND_CLASS_MTP_WINDOW_COVERING => 0x51,
:COMMAND_CLASS_MULTI_INSTANCE_ASSOCIATION => 0x8E,
:COMMAND_CLASS_MULTI_INSTANCE => 0x60,
:COMMAND_CLASS_NO_OPERATION => 0x00,
:COMMAND_CLASS_NODE_NAMING => 0x77,
:COMMAND_CLASS_NON_INTEROPERABLE => 0xf0,
:COMMAND_CLASS_POWERLEVEL => 0x73,
:COMMAND_CLASS_PROPRIETARY => 0x88,
:COMMAND_CLASS_PROTECTION => 0x75,
:COMMAND_CLASS_REMOTE_ASSOCIATION_ACTIVATE => 0x7c,
:COMMAND_CLASS_REMOTE_ASSOCIATION => 0x7d,
:COMMAND_CLASS_SCENE_ACTIVATION => 0x2b,
:COMMAND_CLASS_SCENE_ACTUATOR_CONF => 0x2C,
:COMMAND_CLASS_SCENE_CONTROLLER_CONF => 0x2D,
:COMMAND_CLASS_SCREEN_ATTRIBUTES => 0x93,
:COMMAND_CLASS_SCREEN_MD => 0x92,
:COMMAND_CLASS_SECURITY => 0x98,
:COMMAND_CLASS_SENSOR_ALARM => 0x9C,
:COMMAND_CLASS_SENSOR_CONFIGURATION => 0x9E,
:COMMAND_CLASS_SILENCE_ALARM => 0x9d,
:COMMAND_CLASS_SIMPLE_AV_CONTROL => 0x94,
:COMMAND_CLASS_SWITCH_BINARY => 0x25,
:COMMAND_CLASS_SWITCH_TOGGLE_BINARY => 0x28,
:COMMAND_CLASS_SWITCH_TOGGLE_MULTILEVEL => 0x29,
:COMMAND_CLASS_THERMOSTAT_FAN_MODE => 0x44,
:COMMAND_CLASS_THERMOSTAT_FAN_STATE => 0x45,
:COMMAND_CLASS_THERMOSTAT_HEATING => 0x38,
:COMMAND_CLASS_THERMOSTAT_MODE => 0x40,
:COMMAND_CLASS_THERMOSTAT_OPERATING_STATE => 0x42,
:COMMAND_CLASS_THERMOSTAT_SETBACK => 0x47,
:COMMAND_CLASS_THERMOSTAT_SETPOINT => 0x43,
:COMMAND_CLASS_TIME_PARAMETERS => 0x8B,
:COMMAND_CLASS_TIME => 0x8a,
:COMMAND_CLASS_USER_CODE => 0x63,
:COMMAND_CLASS_ZIP_ADV_CLIENT => 0x34,
:COMMAND_CLASS_ZIP_ADV_SERVER => 0x33,
:COMMAND_CLASS_ZIP_ADV_SERVICES => 0x2F,
:COMMAND_CLASS_ZIP_CLIENT => 0x2e,
:COMMAND_CLASS_ZIP_SERVER => 0x24,
:COMMAND_CLASS_ZIP_SERVICES => 0x23
}

CommandClassesByID = {}
CommandClassesByName.each {|key, value| CommandClassesByID[value] = key }

0 comments on commit cabdac0

Please sign in to comment.