Posted to tcl by Napier at Wed Sep 24 15:48:35 GMT 2014view pretty

proc parseData {buf} {

	LOG "parseData: START"

	global connectionFlag

	global defaultPage

	LOG "Incoming data buffer: $buf"

	## TO-DO: need to be fixed for a situation where two or more commands would be coming in a single string.
	set tempBuf $buf
	set rlist [split $tempBuf "\r\n"]
	LOG "<Tcl> List data $rlist"

	
	foreach data $rlist {
		set idx 0
		if {[string first "~DEVICE" $data] != -1} {
			LOG "Now parsing: $data"
			parseSceneInfo $data
		} elseif { [string first "~OUTPUT" $data] != -1} {
			LOG "Now parsing: $data"
			parseOutputInfo $data
		} elseif {[string first "~HVAC" $data] != -1} {
			LOG "Now parsing $data"
			parseHVACInfo $data
		} elseif {[string first "bad login" $data] != -1} {
			LOG "Bad login attempt."
		} elseif { [string first "login:" $data] != -1 } {
			LOG "Login prompt found. Sending login..."
			sendLoginId
		} elseif { [string first "password:" $data] != -1} {
			LOG "Password prompt found. Sending password..."
			sendPassword
		} elseif { [string first "GNET>" $data] != -1 || [string first "QNET>" $data] != -1} {
			LOG "GNET/QNET tag found"
			if {$connectionFlag == "LOGIN"} {
				LOG "set connectionFlag CONNECTED"
				set connectionFlag "CONNECTED"
				getAllHVACs
				getAllOutputInfo
				getAllSceneInfo
			}
		} elseif {[string first "~ERROR," $data] != -1} {
			set errorNum [string index $data 7]
			LOG "errorNum = $errorNum"
			switch $errorNum {
				"1" {LOG "ERROR: 1 - Parameter count mismatch."}
				"2" {LOG "ERROR: 2 - Object does not exist."}
				"3" {LOG "ERROR: 3 - Invalid action number."}
				"4" {LOG "ERROR: 4 - Parameter data out of range."}
				"5" {LOG "ERROR: 5 - Parameter data malformed."}
				"6" {LOG "ERROR: 6 - Unsupported command."}
				default {LOG "ERROR: unknown - Refer to updated Lutron protocol documentation."}
			}
		} else {puts "Unknown Data Received"
	}

	LOG "parseData: END"
	return 1
}