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 | if (button_data["data"] == (data + '') && button_data["protocol"] == protocol) |
| 31 | { |
||
| 32 | return button_name; |
||
| 33 | } |
||
| 34 | } |
||
| 1646 | runge | 35 | |
| 1648 | runge | 36 | Log("Found no matching button on remote " + remote_name); |
| 1647 | runge | 37 | return ""; |
| 38 | } |
||
| 1646 | runge | 39 | |
| 1647 | runge | 40 | function IRIn_Record(alias_name, remote_name) |
| 41 | { |
||
| 42 | |||
| 43 | if (arguments.length < 2) |
||
| 44 | { |
||
| 45 | Log("\033[31;1mNot enough parameters given.\033[0m\n"); |
||
| 46 | return false; |
||
| 47 | } |
||
| 48 | |||
| 49 | IRIn_RecordRemoteName = Storage_GetParameter("RemoteList", remote_name); |
||
| 50 | |||
| 51 | if (!IRIn_RecordRemoteName) |
||
| 52 | { |
||
| 53 | IRIn_RecordRemoteName = "Remote_" + remote_name; |
||
| 54 | |||
| 55 | Log("\033[32;1mNo such remote name in list, " + remote_name + ", creating...\033[0m\n"); |
||
| 56 | |||
| 57 | Storage_SetParameter("RemoteList", remote_name, IRIn_RecordRemoteName); |
||
| 58 | } |
||
| 59 | |||
| 60 | var aliases_data = Module_ResolveAlias(alias_name, IRIn_ModuleNames); |
||
| 61 | |||
| 62 | for (var name in aliases_data) |
||
| 63 | { |
||
| 64 | if (aliases_data[name]["group"]) |
||
| 65 | { |
||
| 66 | Log("\033[31;1mAlias must not be an alias group.\033[0m\n"); |
||
| 67 | return false; |
||
| 68 | } |
||
| 69 | |||
| 70 | IRIn_RecordAliasData = aliases_data[name]; |
||
| 71 | Log("Enter a single dot to finish.\n"); |
||
| 72 | |||
| 73 | Log("\033[29;1mPress a button on you remote...\033[0m\n"); |
||
| 74 | Console_PreventDefaultPrompt(); |
||
| 75 | |||
| 76 | Module_RegisterToOnMessage(alias_name, IRIn_RecordOnIrMessage); |
||
| 77 | return true; |
||
| 78 | } |
||
| 79 | |||
| 80 | Log("\033[31;1mNo such alias name found, " + alias_name + ".\033[0m\n"); |
||
| 81 | return false; |
||
| 82 | |||
| 83 | } |
||
| 84 | Console_RegisterCommand(IRIn_Record, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, IRIn_Aliases(), IRIn_Remotes()); }); |
||
| 1646 | runge | 85 | |
| 1647 | runge | 86 | function IRIn_RecordOnResponse(response) |
| 1603 | runge | 87 | { |
| 1647 | runge | 88 | if (response == ".") |
| 89 | { |
||
| 90 | return true; |
||
| 91 | } |
||
| 92 | |||
| 93 | Storage_SetParameter(IRIn_RecordRemoteName, response, JSON.stringify(IRIn_RecordLast)); |
||
| 94 | IRIn_RecordLast = null; |
||
| 95 | |||
| 96 | Log("\033[29;1mPress a button on you remote...\033[0m\n"); |
||
| 97 | Console_PreventDefaultPrompt(); |
||
| 98 | |||
| 99 | return true; |
||
| 1603 | runge | 100 | } |
| 101 | |||
| 1647 | runge | 102 | function IRIn_RecordOnIrMessage(alias_name, command, variables) |
| 1603 | runge | 103 | { |
| 1647 | runge | 104 | if (variables["Status"] != "Pressed" || IRIn_RecordLast != null) |
| 1603 | runge | 105 | { |
| 1647 | runge | 106 | return; |
| 1603 | runge | 107 | } |
| 108 | |||
| 1647 | runge | 109 | Log("\033[32;1mGot code " + variables["IRdata"] + " on protocol " + variables["Protocol"] + ".\033[0m\n"); |
| 110 | |||
| 111 | IRIn_RecordLast = { "protocol" : variables["Protocol"], "data" : variables["IRdata"] }; |
||
| 112 | |||
| 113 | Console_PromptRequest("\033[29;1mEnter name: \033[0m", IRIn_RecordOnResponse); |
||
| 114 | |||
| 115 | return true; |
||
| 1603 | runge | 116 | } |
| 117 | |||
| 1647 | runge | 118 | |
| 119 |