Skip to content

Commit

Permalink
Kiss file import from GUI implemented.
Browse files Browse the repository at this point in the history
  • Loading branch information
kape1395 committed May 20, 2014
1 parent db2e7b6 commit a7c43f7
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 5 deletions.
9 changes: 5 additions & 4 deletions priv/www/gui/tmp/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
<li><a href="#downlink-photo" data-toggle="tab">Download Photo</a></li>
<li><a href="#command-log" data-toggle="tab">Command Log</a></li>
<li><a href="#telemetry" data-toggle="tab">Telemetry</a></li>
<li><a href="#telemetry-ham" data-toggle="tab">HAM TM</a></li>
<li><a href="#upload" data-toggle="tab">Upload</a></li>
</ul>
<div class="tab-content">
<div id="immediate-commands" class="tab-pane">
Expand Down Expand Up @@ -297,10 +297,11 @@
-->
</div>

<div id="telemetry-ham" class="tab-pane">
<form method="POST" target="_blank" enctype="multipart/form-data" action="/ls1mcs/api/telemetry/ham?mode=preview">
<div id="upload" class="tab-pane">
<form id="upload-form" method="POST" target="_blank" enctype="multipart/form-data" action="/dummy">
<input type="file" name="file">
<input type="submit" value="Submit">
<input type="submit" id="upload-decode_tm" value="Decode TM">
<input type="submit" id="upload-import_frames" value="Import Frames">
</form>
</div>

Expand Down
19 changes: 18 additions & 1 deletion priv/www/gui/tmp/js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ function ls1mcs_init() {
ls1mcs_dlnkphoto_init();
ls1mcs_cmdlog_init();
ls1mcs_telemetry_init();
ls1mcs_upload_init();
}

function api_url(resource) {
Expand Down Expand Up @@ -475,7 +476,7 @@ function ls1mcs_cmdlog_load() {
function ls1mcs_cmdlog_render(commands) {
commands.sort(function (a, b) { return (a.issued == b.issued) ? 0 : (a.issued > b.issued ? -1 : 1); });
var rows = "";
for (var i = 0; i < commands.length && i < 10000; i++) {
for (var i = 0; i < commands.length && i < 1000; i++) {
var c = commands[i];
rows += "<tr data-id='" + c.id + "'>";
rows += "<td>" + c.id + "</td>";
Expand Down Expand Up @@ -526,3 +527,19 @@ function ls1mcs_telemetry_load() {
function ls1mcs_telemetry_render(telemetry) {
$("#telemetry-data-latest").html(JSON.stringify(telemetry, undefined, 4));
}


// =============================================================================
// Main tabs: "upload" tab
// =============================================================================

function ls1mcs_upload_init() {
$("#upload-form").on("click", "#upload-decode_tm", function () {
$("#upload-form").attr("action", api_url("telemetry/ham?m=preview")).submit();
});
$("#upload-form").on("click", "#upload-import_frames", function () {
$("#upload-form").attr("action", api_url("ls1p_frame?m=import")).submit();
});
}


33 changes: 33 additions & 0 deletions src/ls1mcs_yaws_api.erl
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,39 @@ handle_request(["ls1p_frame"], 'GET', _Arg) ->
{ok, Frame} = ls1mcs_store:get_ls1p_frame({cmd, all}),
respond(200, ls1mcs_yaws_json:encode_list(Frame));

%%
%% curl --request POST --data-binary "@14042014_1658.bin" "http://localhost:8000/ls1mcs/api/ls1p_frame/?t=json&m=import"
%% NOTE: Very similar to "http://localhost:8000/ls1mcs/api/telemetry/ham/?t=json&m=preview"
%%
handle_request(["ls1p_frame"], 'POST', Arg = #arg{headers = Headers}) ->
{ok, Ls1pRecv} = ls1mcs_proto_ls1p:make_ref(<<0:16>>, true),
{ok, Ax25Recv} = ls1mcs_proto_ax25:make_ref("NOCALL", "NOCALL", tnc),
{ok, KissRecv} = ls1mcs_proto_kiss:make_ref(),
{ok, RecvChain} = ls1mcs_proto:make_recv_chain([KissRecv, Ax25Recv, Ls1pRecv]),
FileHandler = fun (RawBytes) ->
{ok, RecvFrames, _NewRecvChain} = ls1mcs_proto:recv(RawBytes, RecvChain),
MediaType = case yaws_api:queryvar(Arg, "t") of
{ok, "json"} -> json;
_ -> html
end,
case MediaType of
json ->
respond(200, json_list(RecvFrames));
html ->
{ehtml, [
{body, [], [
{pre, [], [{code, [{id, "ls1p-data"}], jiffy:encode(json_list(RecvFrames))}]},
{script, [{src, "/ls1mcs/gui/tmp/js/vendor/jquery-1.8.3.min.js"}], []},
{script, [{type, "text/javascript"}], <<"$('#ls1p-data').html(JSON.stringify(JSON.parse($('#ls1p-data').html()), undefined, 4));">>}
]}
]}
end
end,
case lists:prefix("multipart/form-data", yaws_api:get_header(Headers, content_type)) of
true -> process_multipart_single_file(FileHandler, Arg);
false -> process_entity(FileHandler, Arg)
end;

handle_request(["ls1p_frame", FrameId], 'GET', _Arg) ->
CRef = ls1mcs_yaws_json:decode(cref, FrameId),
case ls1mcs_store:get_ls1p_frame({cmd, CRef}) of
Expand Down

0 comments on commit a7c43f7

Please sign in to comment.