Subversion Repositories HomeAutomation

Rev

Rev 1968 | Rev 2160 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | SVN | RSS feed

Rev Author Line No. Line
1657 runge 1
 
2
Node_ResetNodeId = null;
3
Node_ResetClientId = null;
4
 
1666 runge 5
Node_ProgramNodeId = null;
6
Node_ProgramClientId = null;
7
 
1669 runge 8
Node_WaitClientId = null;
9
 
1887 arune 10
Node_HexData = "";
1968 arune 11
Node_HexNumLines = 0;
1887 arune 12
 
1657 runge 13
function Node_OnChange(node_id, available)
14
{
15
    if (node_id == Node_ResetNodeId && available)
16
    {
17
        Console_LogToClient(Node_ResetClientId, "\033[32m" + Node_ResetNodeId + " started okay.\033[0m\n");
2083 runge 18
 
19
    Console_NewConnection(Node_ResetClientId); // This is a ugly hack for a bad design for multiusers
20
    Node_ResetNodeId = null;
21
    Node_ResetClientId = null;
1657 runge 22
    }
2083 runge 23
 
1666 runge 24
    if (node_id == Node_ProgramNodeId && available)
25
    {
26
        Console_LogToClient(Node_ProgramClientId, "\033[32m" + Node_ProgramNodeId + " started okay.\033[0m\n");
2083 runge 27
 
28
        Console_NewConnection(Node_ProgramClientId); // This is a ugly hack for a bad design for multiusers
1666 runge 29
        Node_ProgramNodeId = null;
30
        Node_ProgramClientId = null;
31
    }
2083 runge 32
 
1669 runge 33
    if (Node_WaitClientId != null && available)
2083 runge 34
    {
1669 runge 35
        var result = NodeExport_GetNodeInformation(node_id);
2083 runge 36
 
1669 runge 37
        if (!result)
38
        {
39
            Console_LogToClient(Node_WaitClientId, "\033[31mNo node with id " + node_id + " found.\033[0m\n");
40
            return false;
41
        }
2083 runge 42
 
1669 runge 43
        var date = new Date(result["LastActive"] * 1000);
2083 runge 44
 
1669 runge 45
        Console_LogToClient(Node_WaitClientId, "Id: " + result["Id"] + "\n");
46
        Console_LogToClient(Node_WaitClientId, "Valid: " + result["Valid"] + "\n");
47
        Console_LogToClient(Node_WaitClientId, "Bios Version: " + result["BiosVersion"] + "\n");
48
        Console_LogToClient(Node_WaitClientId, "Device Type: " + result["DeviceType"] + "\n");
49
        Console_LogToClient(Node_WaitClientId, "Has Application: " + result["HasApplication"] + "\n");
50
        Console_LogToClient(Node_WaitClientId, "Last Active: " + date.toString() + "\n");
2083 runge 51
 
52
        Console_NewConnection(Node_WaitClientId); // This is a ugly hack for a bad design for multiusers
1669 runge 53
        Node_WaitClientId = null;
54
    }
1657 runge 55
}
56
 
57
function Node_GetAvailableIds()
58
{
59
    var result_list = [];
60
    var available_nodes = NodeExport_GetAvailableNodes();
2083 runge 61
 
1657 runge 62
    for (var n in available_nodes)
63
    {
64
        var id_parts = available_nodes[n].split(",", 2);
2083 runge 65
 
1657 runge 66
        result_list.push(id_parts[0]);
67
    }
2083 runge 68
 
1657 runge 69
    return result_list;
70
}
71
 
72
function Node_ListAvailable()
73
{
74
    var available_nodes = NodeExport_GetAvailableNodes();
2083 runge 75
 
1660 runge 76
    var lines = [["Id", "Modules"]];
2083 runge 77
 
1657 runge 78
    for (var n in available_nodes)
79
    {
1660 runge 80
        var parts = available_nodes[n].split(",");
81
        var id = parts.shift();
82
        var modules = "<none>";
2083 runge 83
 
1660 runge 84
        if (parts.length > 0)
1657 runge 85
        {
1660 runge 86
            modules = parts.join(", ");
1657 runge 87
        }
2083 runge 88
 
1660 runge 89
        lines.push([id, modules]);
1657 runge 90
    }
2083 runge 91
 
1660 runge 92
    var table_lines = create_table(lines);
2083 runge 93
 
1660 runge 94
    Log("\033[29;1m" + table_lines[0] + "\033[0m\n");
2083 runge 95
 
1660 runge 96
    for (var n = 1; n < table_lines.length; n++)
97
    {
98
        Log(table_lines[n] + "\n");
99
    }
2083 runge 100
 
1657 runge 101
    return true;
102
}
103
Console_RegisterCommand(Node_ListAvailable);
104
 
105
function Node_Reset(node_id)
106
{
107
    if (arguments.length < 1)
108
    {
109
        Log("\033[31mNot enough parameters given.\033[0m\n");
110
        return false;
111
    }
2083 runge 112
 
1665 runge 113
    Log("Sending reset to " + node_id + "...\n");
2083 runge 114
 
1657 runge 115
    if (!NodeExport_ResetNode(node_id))
116
    {
117
        Log("\033[31mFailed to send reset.\033[0m\n");
118
        return false;
119
    }
2083 runge 120
 
1666 runge 121
    Node_ProgramClientId = Console_GetClientId();
122
    Node_ProgramNodeId = node_id;
1657 runge 123
    Console_PreventDefaultPrompt();
124
 
125
    return true;
126
}
127
Console_RegisterCommand(Node_Reset, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Node_GetAvailableIds()); });
1665 runge 128
 
1666 runge 129
function Node_Program(node_id, bios, filename)
130
{
131
    if (arguments.length < 3)
132
    {
133
        Log("\033[31mNot enough parameters given.\033[0m\n");
134
        return false;
135
    }
2083 runge 136
 
1666 runge 137
    Log("Initiating programming of " + node_id + "...\n");
2083 runge 138
 
1666 runge 139
    if (!NodeExport_ProgramNode(node_id, bios > 0, filename))
140
    {
141
        Log("\033[31mFailed to start programming.\033[0m\n");
142
        return false;
143
    }
2083 runge 144
 
1666 runge 145
    Node_ResetClientId = Console_GetClientId();
146
    Node_ResetNodeId = node_id;
147
    Console_PreventDefaultPrompt();
2083 runge 148
 
1666 runge 149
    return true;
150
}
151
Console_RegisterCommand(Node_Program, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Node_GetAvailableIds(), [0, 1]); });
152
 
1968 arune 153
function Node_ProgramHex(node_id, bios, hexnumlines)
1887 arune 154
{
155
    if (arguments.length < 2)
156
    {
157
        Log("\033[31mNot enough parameters given.\033[0m\n");
158
        return false;
159
    }
1968 arune 160
    if (Node_HexNumLines != hexnumlines)
161
    {
162
        Log("\033[31mNumber of hex lines does not match received (" + Node_HexNumLines + " received, should be " + hexnumlines + ").\033[0m\n");
163
        return false;
164
    }
2083 runge 165
 
1887 arune 166
    Log("Initiating programming of " + node_id + "...\n");
2083 runge 167
 
1887 arune 168
    if (!NodeExport_ProgramNodeHex(node_id, bios > 0, Node_HexData))
169
    {
170
        Log("\033[31mFailed to start programming.\033[0m\n");
171
        return false;
172
    }
2083 runge 173
 
1887 arune 174
    Node_ResetClientId = Console_GetClientId();
175
    Node_ResetNodeId = node_id;
176
    Console_PreventDefaultPrompt();
177
 
178
    Node_HexData = "";
1968 arune 179
    Node_HexNumLines = 0;
1887 arune 180
 
1968 arune 181
 
1887 arune 182
    return true;
183
}
184
Console_RegisterCommand(Node_ProgramHex, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Node_GetAvailableIds(), [0, 1]); });
185
 
186
function Node_ClearHex()
187
{
1889 arune 188
//    Log("Clearing hexdata...\n");
2083 runge 189
 
1887 arune 190
    Node_HexData = "";
1968 arune 191
    Node_HexNumLines = 0;
1889 arune 192
 
1887 arune 193
    return true;
194
}
195
Console_RegisterCommand(Node_ClearHex);
196
 
197
function Node_AppendHex(hexrow)
198
{
199
    if (arguments.length < 1)
200
    {
201
        Log("\033[31mNot enough parameters given.\033[0m\n");
202
        return false;
203
    }
2083 runge 204
 
1889 arune 205
//    Log("Appending hexrow...\n");
2083 runge 206
 
1887 arune 207
    Node_HexData = Node_HexData + hexrow + "\n";
1968 arune 208
    Node_HexNumLines += 1;
1889 arune 209
 
1887 arune 210
    return true;
211
}
212
Console_RegisterCommand(Node_AppendHex);
213
 
1665 runge 214
function Node_GetInformation(node_id)
215
{
216
    if (arguments.length < 1)
217
    {
218
        Log("\033[31mNot enough parameters given.\033[0m\n");
219
        return false;
220
    }
2083 runge 221
 
1665 runge 222
    var result = NodeExport_GetNodeInformation(node_id);
2083 runge 223
 
1665 runge 224
    if (!result)
225
    {
226
        Log("\033[31mNo node with id " + node_id + " found.\033[0m\n");
227
        return false;
228
    }
2083 runge 229
 
1665 runge 230
    var date = new Date(result["LastActive"] * 1000);
2083 runge 231
 
1673 runge 232
    Log("\033[96mId: \033[0;1m" + result["Id"] + "\033[0m\n");
233
    Log("\033[96mValid: \033[0;1m" + result["Valid"] + "\033[0m\n");
234
    Log("\033[96mBios Version: \033[0;1m" + result["BiosVersion"] + "\033[0m\n");
235
    Log("\033[96mDevice Type: \033[0;1m" + result["DeviceType"] + "\033[0m\n");
236
    Log("\033[96mHas Application: \033[0;1m" + result["HasApplication"] + "\033[0m\n");
237
    Log("\033[96mLast Active: \033[0;1m" + date.toString() + "\033[0m\n");
2083 runge 238
 
1665 runge 239
    return true;
240
}
241
Console_RegisterCommand(Node_GetInformation, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Node_GetAvailableIds()); });
1669 runge 242
 
243
function Node_WaitForInformation()
244
{
245
    Node_WaitClientId = Console_GetClientId();
246
    Console_PreventDefaultPrompt();
2083 runge 247
 
1669 runge 248
    return true;
249
}
250
Console_RegisterCommand(Node_WaitForInformation);