Details | Last modification | View Log | SVN | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 1603 | runge | 1 | |
| 1647 | runge | 2 | IRIn_ModuleNames = [ "irReceive" ]; |
| 1646 | runge | 3 | IRIn_Channels = function() { return [ 0 ]; }; |
| 1647 | runge | 4 | IRIn_Aliases = function() { return Module_GetAliasNames(IRIn_ModuleNames); }; |
| 5 | IRIn_AvailableIds = function() { return Module_GetAvailableIds(IRIn_ModuleNames); }; |
||
| 6 | IRIn_Remotes = function() { return get_keys(Storage_GetParameters("RemoteList")); }; |
||
| 1646 | runge | 7 | |
| 1647 | runge | 8 | IRIn_RecordRemoteName = null; |
| 9 | IRIn_RecordAliasData = null; |
||
| 10 | IRIn_RecordLast = null; |
||
| 11 | |||
| 12 | function IRIn_CodeToName(data, protocol, remote_name) |
||
| 1646 | runge | 13 | { |
| 1647 | runge | 14 | var remote_storage_name = Storage_GetParameter("RemoteList", remote_name); |
| 1646 | runge | 15 | |
| 1647 | runge | 16 | if (!remote_storage_name) |
| 17 | { |
||
| 18 | Log("No such remote " + remote_name); |
||
| 19 | return ""; |
||
| 20 | } |
||
| 1646 | runge | 21 | |
| 1647 | runge | 22 | var buttons = Storage_GetParameters(remote_storage_name); |
| 1646 | runge | 23 | |
| 1647 | runge | 24 | for (var button_name in buttons) |
| 25 | { |
||
| 26 | var button_data = eval("(" + buttons[button_name]+ ")"); |
||
| 1646 | runge | 27 | |
| 1647 | runge | 28 | Log(buttons[button_name]); |
| 1646 | runge | 29 | |
| 1647 | runge | 30 | Log(button_data); |
| 31 | Log(button_data["protocol"] + "==" + protocol); |
||
| 32 | Log(button_data["data"] + "==" + data); |
||
| 1646 | runge | 33 | |
| 1647 | runge | 34 | if (button_data["data"] == (data + '') && button_data["protocol"] == protocol) |
| 35 | { |
||
| 36 | return button_name; |
||
| 37 | } |
||
| 38 | } |
||
| 1646 | runge | 39 | |
| 1647 | runge | 40 | Log("Found nothing"); |
| 41 | return ""; |
||
| 42 | } |
||
| 1646 | runge | 43 | |
| 1647 | runge | 44 | function IRIn_Record(alias_name, remote_name) |
| 45 | { |
||
| 46 | |||
| 47 | if (arguments.length < 2) |
||
| 48 | { |
||
| 49 | Log("\033[31;1mNot enough parameters given.\033[0m\n"); |
||
| 50 | return false; |
||
| 51 | } |
||
| 52 | |||
| 53 | IRIn_RecordRemoteName = Storage_GetParameter("RemoteList", remote_name); |
||
| 54 | |||
| 55 | if (!IRIn_RecordRemoteName) |
||
| 56 | { |
||
| 57 | IRIn_RecordRemoteName = "Remote_" + remote_name; |
||
| 58 | |||
| 59 | Log("\033[32;1mNo such remote name in list, " + remote_name + ", creating...\033[0m\n"); |
||
| 60 | |||
| 61 | Storage_SetParameter("RemoteList", remote_name, IRIn_RecordRemoteName); |
||
| 62 | } |
||
| 63 | |||
| 64 | var aliases_data = Module_ResolveAlias(alias_name, IRIn_ModuleNames); |
||
| 65 | |||
| 66 | for (var name in aliases_data) |
||
| 67 | { |
||
| 68 | if (aliases_data[name]["group"]) |
||
| 69 | { |
||
| 70 | Log("\033[31;1mAlias must not be an alias group.\033[0m\n"); |
||
| 71 | return false; |
||
| 72 | } |
||
| 73 | |||
| 74 | IRIn_RecordAliasData = aliases_data[name]; |
||
| 75 | Log("Enter a single dot to finish.\n"); |
||
| 76 | |||
| 77 | Log("\033[29;1mPress a button on you remote...\033[0m\n"); |
||
| 78 | Console_PreventDefaultPrompt(); |
||
| 79 | |||
| 80 | Module_RegisterToOnMessage(alias_name, IRIn_RecordOnIrMessage); |
||
| 81 | return true; |
||
| 82 | } |
||
| 83 | |||
| 84 | Log("\033[31;1mNo such alias name found, " + alias_name + ".\033[0m\n"); |
||
| 85 | return false; |
||
| 86 | |||
| 87 | } |
||
| 88 | Console_RegisterCommand(IRIn_Record, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, IRIn_Aliases(), IRIn_Remotes()); }); |
||
| 1646 | runge | 89 | |
| 1647 | runge | 90 | function IRIn_RecordOnResponse(response) |
| 1603 | runge | 91 | { |
| 1647 | runge | 92 | if (response == ".") |
| 93 | { |
||
| 94 | return true; |
||
| 95 | } |
||
| 96 | |||
| 97 | Storage_SetParameter(IRIn_RecordRemoteName, response, JSON.stringify(IRIn_RecordLast)); |
||
| 98 | IRIn_RecordLast = null; |
||
| 99 | |||
| 100 | Log("\033[29;1mPress a button on you remote...\033[0m\n"); |
||
| 101 | Console_PreventDefaultPrompt(); |
||
| 102 | |||
| 103 | return true; |
||
| 1603 | runge | 104 | } |
| 105 | |||
| 1647 | runge | 106 | function IRIn_RecordOnIrMessage(alias_name, command, variables) |
| 1603 | runge | 107 | { |
| 1647 | runge | 108 | Log("callback\n"); |
| 109 | |||
| 110 | if (variables["Status"] != "Pressed" || IRIn_RecordLast != null) |
||
| 1603 | runge | 111 | { |
| 1647 | runge | 112 | return; |
| 1603 | runge | 113 | } |
| 114 | |||
| 1647 | runge | 115 | Log("\033[32;1mGot code " + variables["IRdata"] + " on protocol " + variables["Protocol"] + ".\033[0m\n"); |
| 116 | |||
| 117 | IRIn_RecordLast = { "protocol" : variables["Protocol"], "data" : variables["IRdata"] }; |
||
| 118 | |||
| 119 | Console_PromptRequest("\033[29;1mEnter name: \033[0m", IRIn_RecordOnResponse); |
||
| 120 | |||
| 121 | return true; |
||
| 1603 | runge | 122 | } |
| 123 | |||
| 1647 | runge | 124 | |
| 125 |