Last active
December 8, 2019 11:25
-
-
Save connorjak/9f853bb83559976e12c9e38811c3c0af to your computer and use it in GitHub Desktop.
ISS Telemetry Stream
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "./../include/ISSLIVE_Telemetry.h" | |
#include "./../include/TelemIdents.h" | |
#include "./../../../server/SystemUtils/HelperMacros.h" | |
#include <map> | |
#include <iostream> | |
#include <string> | |
#include <sstream> | |
#include <algorithm> | |
#include <iterator> | |
#include <stdlib.h> // for stoi | |
using std::string; | |
using std::to_string; | |
using std::cout; | |
using std::map; | |
using std::stof; | |
template <class Container> | |
void split2(const std::string& str, Container& cont, char delim = ' ') | |
{ | |
std::stringstream ss(str); | |
std::string token; | |
while (std::getline(ss, token, delim)) { | |
cont.push_back(token); | |
} | |
} | |
// Avert your eyes, there are no thoughts given to performance here. | |
static TelemUpdate decodeJson(string jsonstring) | |
{ | |
jsonstring.erase(std::remove(jsonstring.begin(), jsonstring.end(), '"'), jsonstring.end()); | |
vector<string> sections; | |
split2(jsonstring, sections,','); | |
vector<string> smallersections; | |
for (string section : sections) | |
{ | |
vector<string> newsections; | |
split2(section, newsections, ':'); | |
std::move(newsections.begin(), newsections.end(), std::back_inserter(smallersections)); | |
} | |
TelemUpdate tu; | |
tu.name = smallersections[1]; | |
tu.value = smallersections[3]; | |
return tu; | |
} | |
ISSLIVE_Telemetry::ISSLIVE_Telemetry() | |
{ | |
} | |
void ISSLIVE_Telemetry::init() | |
{ | |
// Start Javascript connection to ISSLIVE that puts the telemetry into the database | |
startJS_Telemetry(); | |
usleep(500000); | |
for (uint i = 0; i < entities.size(); i++) | |
{ | |
for (string ident : telemIdentifiers) | |
{ | |
ENTITY(i)->addParameter(ident, new GenParam_String()); //TODO Breaking when using ue4 client | |
string tmpmsg = "NO_DATA"; | |
ENTITY(i)->setParameter(ident, tmpmsg); | |
} | |
} | |
// Socket stuff | |
/*char* str; | |
int fd = 0; | |
struct sockaddr_in demoserverAddr;*/ | |
fd = socket(AF_INET, SOCK_STREAM, 0); | |
if (fd < 0) | |
{ | |
output->perror("[ISSLIVE-IPC] Could not create socket"); | |
} | |
else | |
{ | |
demoserverAddr.sin_family = AF_INET; | |
demoserverAddr.sin_port = htons(4337); | |
demoserverAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); | |
memset(demoserverAddr.sin_zero, '\0', sizeof(demoserverAddr.sin_zero)); | |
} | |
int numTries = 0; | |
while (connect(fd, (const struct sockaddr*) & demoserverAddr, sizeof(demoserverAddr)) < 0) | |
{ | |
output->pwarning("[ISSLIVE-IPC] Could not yet connect to server"); | |
usleep(200000); | |
if (++numTries > 100) | |
{ | |
output->perror("[ISSLIVE-IPC] Exceeded 100 tries of connecting to server"); | |
} | |
} | |
// End socket stuff | |
} | |
void ISSLIVE_Telemetry::update() | |
{ | |
char buf[21]; | |
memset(&buf, '0', sizeof(buf)); | |
int numReads = 0; | |
while ((read(fd, buf, 20)) > 0) | |
{ | |
//for (uint i = 0; i < 157; i++) | |
//{ | |
// //printf("%s\n", json_object_to_json_string(jobj)); | |
// //json_parse(jobj); | |
// printf("%d\n", buf[i]); | |
//} | |
for (uint i = 0; i < 20; i++) | |
{ | |
if (buf[i] == '{') | |
{ | |
currentstring = ""; | |
} | |
else if (buf[i] == '}') | |
{ | |
telemUpdates.push_back(decodeJson(currentstring)); | |
currentstring = ""; | |
//output->print(/*" " +*/ to_string(telemUpdates.size()) + " "); | |
} | |
else | |
{ | |
currentstring += buf[i]; | |
} | |
} | |
/*string tmpmsg = ""; | |
tmpmsg = tmpmsg + buf[i]; | |
output->print(tmpmsg);*/ | |
if (++numReads > 50) //TODO this looks like it might not break out properly if it runs out of data to process | |
break; | |
} | |
//Set relevant parameters | |
for (TelemUpdate tu : telemUpdates) | |
{ | |
for (uint i = 0; i < entities.size(); i++) | |
{ | |
ENTITY(i)->setParameter(tu.name, tu.value); //TODO Breaking when using ue4 client | |
} | |
} | |
telemUpdates.clear(); | |
} | |
void ISSLIVE_Telemetry::startJS_Telemetry() | |
{ | |
// Run the JS telemetry script here | |
system("node ./packages/ISSLIVE_Telemetry/src/ISS_Telemetry_IPC.js &"); | |
} | |
//(SpaceCRAFT Boilerplate) | |
extern "C" | |
{ | |
ISSLIVE_Telemetry* create(map<string, string> properties) | |
{ | |
// Create new instance and return | |
ISSLIVE_Telemetry* newInstance = new ISSLIVE_Telemetry(); | |
// Set parameters Here | |
newInstance->setProperties(properties); | |
return newInstance; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/************************************************************ | |
* Copyright SpaceCRAFT 2019, All Rights Reserved. | |
* Released under MIT License. | |
* Used libraries: | |
* - lightstreamer-client on the nodejs side of this | |
*************************************************************/ | |
#pragma once | |
#include "./../../../server/AtomicStandardOutput.h" | |
#include "./../../../server/Entity.h" | |
#include "./../../../server/System.h" | |
#include <stdio.h> | |
//NOTE: more #includes for added-in libraries go here | |
struct TelemUpdate | |
{ | |
string name; | |
string value; | |
}; | |
class ISSLIVE_Telemetry : public System | |
{ | |
private: | |
//IPC stuff | |
char* str; | |
int fd = 0; | |
struct sockaddr_in demoserverAddr; | |
string currentstring = ""; | |
vector<TelemUpdate> telemUpdates; | |
public: | |
ISSLIVE_Telemetry(); | |
void init(); | |
void update(); | |
void startJS_Telemetry(); | |
}; | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function alert(message) | |
{ | |
} | |
var ls = require("lightstreamer-client"); | |
var sqlite3 = require("sqlite3"); | |
//var db = new sqlite3.Database("/home/pi/Mimic/Pi/iss_telemetry.db", sqlite3.OPEN_READWRITE, db_err); | |
var db = new sqlite3.Database("/dev/shm/iss_telemetry.db", sqlite3.OPEN_CREATE | sqlite3.OPEN_READWRITE); | |
// var telemetry = require("/home/pi/Mimic/Pi/Telemetry_identifiers.js"); | |
var telemetry = require("./Telemetry_identifiers.js"); | |
var classes = ["TimeStamp", "Value"]; | |
var lsClient = new ls.LightstreamerClient("http://push.lightstreamer.com", "ISSLIVE"); //actual telemetry server | |
//var lsClient = new ls.LightstreamerClient("http://sl-iot-server-13.slsandbox.com:8080", "ISSLIVE_LS_SL"); //sl recorded data server | |
lsClient.connectionOptions.setSlowingEnabled(false); | |
var sub = new ls.Subscription("MERGE", telemetry.identifiers, classes); | |
var timeSub = new ls.Subscription("MERGE", "TIME_000001", ["TimeStamp", "Value", "Status.Class", "Status.Indicator"]); | |
lsClient.subscribe(sub); | |
lsClient.subscribe(timeSub); | |
var AOS; | |
var AOSnum = 0; | |
var now = new Date(); | |
var gmtoff = (now.getTimezoneOffset())/60; | |
var start = new Date(now.getFullYear(), 0, 0); | |
var diff = (now - start) + ((start.getTimezoneOffset() - now.getTimezoneOffset()) * 60 * 1000); | |
var oneDay = 1000 * 60 * 60 * 24; | |
var timestampnow = (diff / oneDay) * 24 + gmtoff; | |
console.log("[ISSLIVE-JS-TELEM] " + 'ISS Telemetry script active'); | |
//console.log("[ISSLIVE-JS-TELEM] " + 'Current timestamp: ' + timestampnow); | |
lsClient.addListener({ | |
onStatusChange: function(newStatus) { | |
console.log("[ISSLIVE-JS-TELEM] " + "Client status:" + newStatus); | |
db.run("UPDATE telemetry set Value = ? where Label = ?", newStatus, "ClientStatus"); | |
} | |
}); | |
lsClient.connect(); | |
console.log("[ISSLIVE-JS-TELEM] " + lsClient.getStatus()); | |
sub.addListener({ | |
onSubscription: function() { | |
console.log("[ISSLIVE-JS-TELEM] " + "Subscribed"); | |
db.run("UPDATE telemetry set Value = ? where Label = ?", "Subscribed", "Lightstreamer"); | |
}, | |
onUnsubscription: function() { | |
console.log("[ISSLIVE-JS-TELEM] " + "Unsubscribed"); | |
db.run("UPDATE telemetry set Value = ? where Label = ?", "Unsubscribed", "Lightstreamer"); | |
}, | |
onItemUpdate: function(update) | |
{ | |
// console.log("[ISSLIVE-JS-TELEM] (DEBUG) Telemetry itemUpdate"); | |
// console.log("[ISSLIVE-JS-TELEM] (DEBUG) Item: " + update.getItemName() + ": "+ update.getValue("Value")); | |
db.run("UPDATE telemetry set Value = ? where ID = ?", update.getValue("Value"), update.getItemName()); | |
db.run("UPDATE telemetry set Timestamp = ? where ID = ?", update.getValue("TimeStamp"), update.getItemName()); | |
} | |
}); | |
timeSub.addListener({ | |
onItemUpdate: function (update) { | |
// console.log("[ISSLIVE-JS-TELEM] (DEBUG) Timestamp itemUpdate"); | |
var status = update.getValue("Status.Class"); | |
// console.log("[ISSLIVE-JS-TELEM] " + "Status: " + status); | |
AOStimestamp = parseFloat(update.getValue("TimeStamp")); | |
// console.log("[ISSLIVE-JS-TELEM] " + "Timestamp: " + update.getValue("TimeStamp")); | |
difference = timestampnow - AOStimestamp; | |
// console.log("[ISSLIVE-JS-TELEM] " + "Difference " + difference); | |
if ( status === "24") | |
{ | |
if( difference > 0.00153680542553047 ) | |
{ | |
console.log("[ISSLIVE-JS-TELEM] " + "Signal Error! @ " + update.getValue("TimeStamp")); | |
AOS = "Stale Signal"; | |
AOSnum = 2; | |
} | |
else | |
{ | |
if ( AOSnum !== 1 ) | |
{ | |
console.log("[ISSLIVE-JS-TELEM] " + "Connected to the ISS! @ " + update.getValue("TimeStamp")); | |
} | |
AOS = "Siqnal Acquired"; | |
AOSnum = 1; | |
} | |
} | |
else | |
{ | |
if( difference > 0.00153680542553047 ) | |
{ | |
console.log("[ISSLIVE-JS-TELEM] " + "Signal Error! @ " + update.getValue("TimeStamp")); | |
AOS = "Stale Signal"; | |
AOSnum = 2; | |
} | |
else | |
{ | |
console.log("[ISSLIVE-JS-TELEM] " + "Signal Lost! @ " + update.getValue("TimeStamp")); | |
AOS = "Signal Lost"; | |
AOSnum = 0; | |
} | |
} | |
db.run("UPDATE telemetry set Value = ? where Label = ?", AOSnum, "aos"); | |
db.run("UPDATE telemetry set Timestamp = ? where Label = ?", AOStimestamp, "aos"); | |
} | |
}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function alert(message) | |
{ | |
} | |
// Terminal text coloring: | |
const ANSIReset = "\x1b[0m" | |
const ANSIBright = "\x1b[1m" | |
const ANSIDim = "\x1b[2m" | |
const ANSIUnderscore = "\x1b[4m" | |
const ANSIBlink = "\x1b[5m" | |
const ANSIReverse = "\x1b[7m" | |
const ANSIHidden = "\x1b[8m" | |
const ANSIFgBlack = "\x1b[30m" | |
const ANSIFgRed = "\x1b[31m" | |
const ANSIFgGreen = "\x1b[32m" | |
const ANSIFgYellow = "\x1b[33m" | |
const ANSIFgBlue = "\x1b[34m" | |
const ANSIFgMagenta = "\x1b[35m" | |
const ANSIFgCyan = "\x1b[36m" | |
const ANSIFgWhite = "\x1b[37m" | |
const ANSIBgBlack = "\x1b[40m" | |
const ANSIBgRed = "\x1b[41m" | |
const ANSIBgGreen = "\x1b[42m" | |
const ANSIBgYellow = "\x1b[43m" | |
const ANSIBgBlue = "\x1b[44m" | |
const ANSIBgMagenta = "\x1b[45m" | |
const ANSIBgCyan = "\x1b[46m" | |
const ANSIBgWhite = "\x1b[47m" | |
var ls = require("lightstreamer-client"); | |
///////////// | |
var net = require('net'); | |
var socks = []; | |
var server = net.createServer(function(socket) { | |
socks.push(socket); | |
//socket.write('Joined to server\r\n'); | |
//socket.pipe(socket); | |
}); | |
server.listen(4337, '127.0.0.1'); | |
server.on('newLSdata', (updateJSON) => { | |
socks[0].write(JSON.stringify(updateJSON)); | |
//NOTE only writes to the first connection for now | |
}); | |
//////////////// | |
var telemetry = require("./Telemetry_identifiers.js"); | |
var classes = ["TimeStamp", "Value"]; | |
var lsClient = new ls.LightstreamerClient("http://push.lightstreamer.com", "ISSLIVE"); //actual telemetry server | |
//var lsClient = new ls.LightstreamerClient("http://sl-iot-server-13.slsandbox.com:8080", "ISSLIVE_LS_SL"); //sl recorded data server | |
lsClient.connectionOptions.setSlowingEnabled(false); | |
var sub = new ls.Subscription("MERGE", telemetry.identifiers, classes); | |
var timeSub = new ls.Subscription("MERGE", "TIME_000001", ["TimeStamp", "Value", "Status.Class", "Status.Indicator"]); | |
lsClient.subscribe(sub); | |
lsClient.subscribe(timeSub); | |
var AOS; | |
var AOSnum = 0; | |
var now = new Date(); | |
var gmtoff = (now.getTimezoneOffset())/60; | |
var start = new Date(now.getFullYear(), 0, 0); | |
var diff = (now - start) + ((start.getTimezoneOffset() - now.getTimezoneOffset()) * 60 * 1000); | |
var oneDay = 1000 * 60 * 60 * 24; | |
var timestampnow = (diff / oneDay) * 24 + gmtoff; | |
console.log(ANSIFgBlue + "[ISSLIVE-JS-TELEM] " + ANSIFgWhite + 'ISS Telemetry script active' + ANSIReset); | |
//console.log("[ISSLIVE-JS-TELEM] " + 'Current timestamp: ' + timestampnow); | |
lsClient.addListener({ | |
onStatusChange: function(newStatus) { | |
console.log(ANSIFgBlue + "[ISSLIVE-JS-TELEM] " + ANSIReset + "Client status:" + newStatus); | |
//TODO omitting this data for now | |
//server.emit('newLSdata',"UPDATE telemetry set Value = " + newStatus + " where Label = " + "ClientStatus"); | |
} | |
}); | |
lsClient.connect(); | |
console.log(ANSIFgBlue + "[ISSLIVE-JS-TELEM] " + ANSIReset + lsClient.getStatus()); | |
sub.addListener({ | |
onSubscription: function() { | |
console.log(ANSIFgBlue + "[ISSLIVE-JS-TELEM] " + ANSIReset + "Subscribed"); | |
//TODO omitting this data for now | |
//server.emit('newLSdata',"|telemetry|Value|Subscribed|Name|Lightstreamer"); | |
}, | |
onUnsubscription: function() { | |
console.log(ANSIFgBlue + "[ISSLIVE-JS-TELEM] " + ANSIReset + "Unsubscribed"); | |
//TODO omitting this data for now | |
//server.emit('newLSdata',"UPDATE telemetry set Value = Unsubscribed where Label = Lightstreamer"); | |
}, | |
onItemUpdate: function(update) | |
{ | |
//console.log("[ISSLIVE-JS-TELEM] (DEBUG) Telemetry itemUpdate"); | |
//console.log("[ISSLIVE-JS-TELEM] (DEBUG) Item: " + update.getItemName() + ": "+ update.getValue("Value")); | |
var updateJson = { | |
name: update.getItemName(), | |
value: update.getValue("Value") | |
} | |
server.emit('newLSdata',updateJson); | |
// server.emit('newLSdata',"UPDATE telemetry set Value = "+update.getValue("Value")+" where ID = " + update.getItemName()); | |
//server.emit('newLSdata',"UPDATE telemetry set Timestamp = "+update.getValue("TimeStamp")+" where ID = " + update.getItemName()); | |
} | |
}); | |
timeSub.addListener({ | |
onItemUpdate: function (update) { | |
// console.log("[ISSLIVE-JS-TELEM] (DEBUG) Timestamp itemUpdate"); | |
var status = update.getValue("Status.Class"); | |
// console.log(ANSIFgBlue + "[ISSLIVE-JS-TELEM] " + ANSIReset + "Status: " + status); | |
AOStimestamp = parseFloat(update.getValue("TimeStamp")); | |
// console.log(ANSIFgBlue + "[ISSLIVE-JS-TELEM] " + ANSIReset + "Timestamp: " + update.getValue("TimeStamp")); | |
difference = timestampnow - AOStimestamp; | |
// console.log(ANSIFgBlue + "[ISSLIVE-JS-TELEM] " + ANSIReset + "Difference " + difference); | |
if ( status === "24") | |
{ | |
if( difference > 0.00153680542553047 ) | |
{ | |
console.log(ANSIFgBlue + "[ISSLIVE-JS-TELEM] " + ANSIReset + ANSIBgYellow + ANSIFgBlack + "ISS Downlink Signal Stale. @ " + update.getValue("TimeStamp") + ANSIReset); | |
AOS = "Stale Signal"; | |
AOSnum = 2; | |
} | |
else | |
{ | |
if ( AOSnum !== 1 ) | |
{ | |
console.log(ANSIFgBlue + "[ISSLIVE-JS-TELEM] " + ANSIReset + ANSIBgGreen + ANSIFgBlack + "Connected to the ISS! @ " + update.getValue("TimeStamp") + ANSIReset); | |
} | |
AOS = "Siqnal Acquired"; | |
AOSnum = 1; | |
} | |
} | |
else | |
{ | |
if( difference > 0.00153680542553047 ) | |
{ | |
console.log(ANSIFgBlue + "[ISSLIVE-JS-TELEM] " + ANSIReset + ANSIBgYellow + ANSIFgBlack + "ISS Downlink Signal Stale. @ " + update.getValue("TimeStamp") + ANSIReset); | |
AOS = "Stale Signal"; | |
AOSnum = 2; | |
} | |
else | |
{ | |
console.log(ANSIFgBlue + "[ISSLIVE-JS-TELEM] " + ANSIReset + ANSIBgRed + ANSIFgBlack + "ISS Downlink Signal Lost! @ " + update.getValue("TimeStamp") + ANSIReset); | |
console.log(ANSIFgBlue + "[ISSLIVE-JS-TELEM] " + ANSIReset + "Signal is likely to be reacquired within 5-20 minutes."); | |
AOS = "Signal Lost"; | |
AOSnum = 0; | |
} | |
} | |
//TODO disabling this data for now | |
//server.emit('newLSdata',"UPDATE telemetry set Value = "+AOSnum+" where Label = aos"); | |
//server.emit('newLSdata',"UPDATE telemetry set Timestamp = "+AOStimestamp+" where Label = aos"); | |
} | |
}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "./../include/ISSLIVE_Telemetry.h" | |
#include "./../include/TelemIdents.h" | |
#include "./../../../server/SystemUtils/HelperMacros.h" | |
#include <map> | |
#include <iostream> | |
#include <string> | |
#include <sstream> | |
#include <algorithm> | |
#include <iterator> | |
#include <stdlib.h> // for stoi | |
using std::string; | |
using std::to_string; | |
using std::cout; | |
using std::map; | |
using std::stof; | |
// Communication method from JS to C++ | |
#define USE_SQLITE false | |
#define USE_IPC true | |
// Details about SQLite | |
#define CLOSEAFTERINIT_SQLITE true //SEGFAULT if false! | |
#define RESPAWN_SQLITE false //Javascript has Locking Protocol error if false; C++ has Locking Protocol error if true. | |
// No matter the RESPAWN_SQLITE state, it seems to not affect the JS "Signal Failure" / "Connected to the ISS" state. | |
template <class Container> | |
void split2(const std::string& str, Container& cont, char delim = ' ') | |
{ | |
std::stringstream ss(str); | |
std::string token; | |
while (std::getline(ss, token, delim)) { | |
cont.push_back(token); | |
} | |
} | |
// Avert your eyes, there are no thoughts given to performance here. | |
static TelemUpdate decodeJson(string jsonstring) | |
{ | |
/*jsonstring.erase(std::remove(jsonstring.begin(), jsonstring.end(), '{'), jsonstring.end()); | |
jsonstring.erase(std::remove(jsonstring.begin(), jsonstring.end(), '}'), jsonstring.end());*/ | |
jsonstring.erase(std::remove(jsonstring.begin(), jsonstring.end(), '"'), jsonstring.end()); | |
vector<string> sections; | |
split2(jsonstring, sections,','); | |
vector<string> smallersections; | |
for (string section : sections) | |
{ | |
vector<string> newsections; | |
split2(section, newsections, ':'); | |
std::move(newsections.begin(), newsections.end(), std::back_inserter(smallersections)); | |
} | |
TelemUpdate tu; | |
tu.name = smallersections[1]; | |
tu.value = smallersections[3]; | |
return tu; | |
/*char currentchar = '\0'; | |
char flagchar = ':'; | |
while (currentchar != flagchar) | |
{ | |
jsonstring. | |
}*/ | |
} | |
static int sqldebugcallback(void* output, int argc, char** argv, char** azColName) | |
{ | |
int i; | |
for (i = 0; i < argc; i++) | |
{ | |
string tmpmsg = ""; | |
tmpmsg = tmpmsg + azColName[i] + " = " + (argv[i] ? argv[i] : "NULL"); | |
//tmpmsg.erase(std::remove(tmpmsg.begin(), tmpmsg.end(), '\n'), tmpmsg.end()); //remove all newlines | |
((AtomicStandardOutput*)output)->print(tmpmsg); | |
} | |
return 0; | |
} | |
static void handleSQLiteRC(int rc, AtomicStandardOutput* output, sqlite3* db) | |
{ | |
if (rc != SQLITE_OK) | |
{ | |
string tmpmsg = "[ISSLIVE] SQLite Error: "; | |
tmpmsg = tmpmsg + sqlite3_errmsg(db); | |
output->perror(tmpmsg, false); | |
} | |
} | |
static void handleSQLiteOpendbRC(int rc, AtomicStandardOutput* output, sqlite3* db) | |
{ | |
if (rc != SQLITE_OK) | |
{ | |
string tmpmsg = "[ISSLIVE] Can't open database: "; | |
tmpmsg = tmpmsg + sqlite3_errmsg(db); | |
output->perror(tmpmsg); | |
} | |
else | |
{ | |
output->printlnColor("[ISSLIVE] Opened database successfully.",ANSI::Color::GREEN); | |
} | |
} | |
void ISSLIVE_Telemetry::executePragmas(AtomicStandardOutput* output, sqlite3* db) | |
{ | |
int rc = SQLITE_OK; | |
if (getInst_Parameter("read_uncommitted")->GetBool()) //This setting has no apparent effect? | |
{ | |
rc = sqlite3_exec(db, "PRAGMA read_uncommitted = true;", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); | |
} | |
else | |
{ | |
rc = sqlite3_exec(db, "PRAGMA read_uncommitted = false;", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); | |
} | |
if (getInst_Parameter("journal_mode_wal")->GetBool()) | |
{ | |
rc = sqlite3_exec(db, "pragma journal_mode=wal", 0, 0, &zErrMsg); //This line is CRITICAL! Locking Protocol error otherwise. | |
handleSQLiteRC(rc, output, db); | |
} | |
} | |
ISSLIVE_Telemetry::ISSLIVE_Telemetry() | |
{ | |
} | |
void ISSLIVE_Telemetry::init() | |
{ | |
#if USE_SQLITE | |
// Connect to sqlite | |
//(reimplemented sqlite connection) | |
// Python code: | |
/*conn = sqlite3.connect('/dev/shm/iss_telemetry.db') | |
conn.isolation_level = None | |
c = conn.cursor()*/ | |
//C++ code: | |
// just making sure we aren't jumping the gun on the database: | |
//usleep(1000000); | |
initializeDatabase(output, db, zErrMsg); | |
// just making sure we aren't jumping the gun on the database: | |
//usleep(1000000); | |
#if CLOSEAFTERINIT_SQLITE | |
rc = sqlite3_open("/dev/shm/iss_telemetry.db", &db); | |
handleSQLiteOpendbRC(rc, output, db); | |
output->println("[ISSLIVE] SQLite reopened after initialize."); | |
#endif | |
/*rc = sqlite3_get_autocommit(db); //Don't really ever need this probably | |
if(rc != 0) | |
output->println("[ISSLIVE] SQLite is in autocommit mode."); | |
else | |
output->pwarning("[ISSLIVE] SQLite is NOT in autocommit mode.");*/ | |
executePragmas(output, db); | |
output->println("[ISSLIVE] SQLite pragmas applied."); | |
/*rc = sqlite3_get_autocommit(db); | |
if (rc != 0) | |
output->println("[ISSLIVE] SQLite is in autocommit mode."); | |
else | |
output->pwarning("[ISSLIVE] SQLite is NOT in autocommit mode.");*/ | |
//////////////////// | |
#if RESPAWN_SQLITE | |
rc = sqlite3_close(db); | |
handleSQLiteRC(rc, output, db); | |
#endif | |
/////////////////// | |
#endif //USE_SQLITE | |
// Start Javascript connection to ISSLIVE that puts the telemetry into the database | |
startJS_Telemetry(); | |
usleep(500000); | |
#if USE_IPC | |
for (uint i = 0; i < entities.size(); i++) | |
{ | |
for (string ident : telemIdentifiers) | |
{ | |
ENTITY(i)->addParameter(ident, new GenParam_String()); //TODO Breaking when using ue4 client | |
string tmpmsg = "NO_DATA"; | |
ENTITY(i)->setParameter(ident, tmpmsg); | |
} | |
} | |
// Socket stuff | |
/*char* str; | |
int fd = 0; | |
struct sockaddr_in demoserverAddr;*/ | |
fd = socket(AF_INET, SOCK_STREAM, 0); | |
if (fd < 0) | |
{ | |
output->perror("[ISSLIVE-IPC] Could not create socket"); | |
} | |
else | |
{ | |
demoserverAddr.sin_family = AF_INET; | |
demoserverAddr.sin_port = htons(4337); | |
demoserverAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); | |
memset(demoserverAddr.sin_zero, '\0', sizeof(demoserverAddr.sin_zero)); | |
} | |
int numTries = 0; | |
while (connect(fd, (const struct sockaddr*) & demoserverAddr, sizeof(demoserverAddr)) < 0) | |
{ | |
output->pwarning("[ISSLIVE-IPC] Could not yet connect to server"); | |
usleep(200000); | |
if (++numTries > 100) | |
{ | |
output->perror("[ISSLIVE-IPC] Exceeded 100 tries of connecting to server"); | |
} | |
} | |
// End socket stuff | |
#endif //USE_IPC | |
} | |
void ISSLIVE_Telemetry::update() | |
{ | |
#if USE_SQLITE | |
// Get updates from sqlite | |
//(reimplemented sqlite check for updates) | |
/*Python code: | |
c.execute('select Value from telemetry') | |
values = c.fetchall() | |
c.execute('select Timestamp from telemetry') | |
timestamps = c.fetchall() | |
sub_status = str((values[255])[0]) #lightstreamer subscript checker | |
client_status = str((values[256])[0]) #lightstreamer client checker | |
psarj = "{:.2f}".format(float((values[0])[0]))*/ | |
//C++ code: | |
/////////////////// | |
#if RESPAWN_SQLITE | |
rc = sqlite3_open("/dev/shm/iss_telemetry.db", &db); | |
handleSQLiteOpendbRC(rc, output, db); | |
executePragmas(output, db); | |
#endif | |
/////////////////// | |
rc = sqlite3_exec(db, "select Value from telemetry", /*ISSLIVE_Telemetry::*/sqldebugcallback, output, &zErrMsg); | |
handleSQLiteRC(rc, output, db); | |
//values = | |
rc = sqlite3_exec(db, "select Timestamp from telemetry", /*ISSLIVE_Telemetry::*/sqldebugcallback, output, &zErrMsg); | |
handleSQLiteRC(rc, output, db); | |
//timestamps = | |
//////////////////// | |
#if RESPAWN_SQLITE | |
rc = sqlite3_close(db); | |
handleSQLiteRC(rc, output, db); | |
#endif | |
/////////////////// | |
output->println("\n"); | |
#endif //USE_SQLITE | |
#if USE_IPC | |
char buf[21]; | |
memset(&buf, '0', sizeof(buf)); | |
int numReads = 0; | |
while ((read(fd, buf, 20)) > 0) | |
{ | |
//for (uint i = 0; i < 157; i++) | |
//{ | |
// //printf("%s\n", json_object_to_json_string(jobj)); | |
// //json_parse(jobj); | |
// printf("%d\n", buf[i]); | |
//} | |
for (uint i = 0; i < 20; i++) | |
{ | |
if (buf[i] == '{') | |
{ | |
currentstring = ""; | |
} | |
else if (buf[i] == '}') | |
{ | |
telemUpdates.push_back(decodeJson(currentstring)); | |
currentstring = ""; | |
//output->print(/*" " +*/ to_string(telemUpdates.size()) + " "); | |
} | |
else | |
{ | |
currentstring += buf[i]; | |
} | |
} | |
/*string tmpmsg = ""; | |
tmpmsg = tmpmsg + buf[i]; | |
output->print(tmpmsg);*/ | |
if (++numReads > 50) | |
break; | |
} | |
#endif //USE_IPC | |
//Set relevant parameters | |
for (TelemUpdate tu : telemUpdates) | |
{ | |
for (uint i = 0; i < entities.size(); i++) | |
{ | |
ENTITY(i)->setParameter(tu.name, tu.value); //TODO Breaking when using ue4 client | |
} | |
} | |
telemUpdates.clear(); | |
} | |
//TODO end behavior: | |
//sqlite3_close(db); | |
void ISSLIVE_Telemetry::startJS_Telemetry() | |
{ | |
// Run the JS telemetry script here | |
#if USE_SQLITE | |
system("node ./packages/ISSLIVE_Telemetry/src/ISS_Telemetry.js &"); | |
#endif | |
#if USE_IPC | |
system("node ./packages/ISSLIVE_Telemetry/src/ISS_Telemetry_IPC.js &"); | |
#endif | |
} | |
void ISSLIVE_Telemetry::initializeDatabase(AtomicStandardOutput* output, sqlite3* db, char* zErrMsg) | |
{ | |
//----------------Open SQLITE3 Database that holds the current ISS Telemetry-------------- | |
output->println("[ISSLIVE-INIT-SQLITE3] Initializing telemetry database."); | |
system("rm /dev/shm/iss_telemetry.db"); //delete sqlite database on exit, db is recreated each time to avoid concurrency issues | |
//system("rm /dev/shm/iss_*"); //delete sqlite database on exit, db is recreated each time to avoid concurrency issues | |
int rc = SQLITE_OK; | |
rc = sqlite3_open("/dev/shm/iss_telemetry.db", &db); | |
handleSQLiteOpendbRC(rc, output, db); | |
//now we populate the blank database, this prevents locked database issues | |
output->println("[ISSLIVE-INIT-SQLITE3] Populating with blank initial values..."); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "pragma journal_mode=wal", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS telemetry (`Label` TEXT PRIMARY KEY, `Timestamp` TEXT, `Value` TEXT, `ID` TEXT, `dbID` NUMERIC )", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('psarj', '0', '0', 'S0000004', 0)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('ssarj', '0', '0', 'S0000003', 1)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('ptrrj', '0', '0', 'S0000002', 2)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('strrj', '0', '0', 'S0000001', 3)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('beta1b', '0', '0', 'S6000008', 4)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('beta1a', '0', '0', 'S4000007', 5)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('beta2b', '0', '0', 'P6000008', 6)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('beta2a', '0', '0', 'P4000007', 7)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('beta3b', '0', '0', 'S6000007', 8)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('beta3a', '0', '0', 'S4000008', 9)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('beta4b', '0', '0', 'P6000007', 10)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('beta4a', '0', '0', 'P4000008', 11)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('aos', '0', '0', 'AOS', 12)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('los', '0', '0', 'LOS', 13)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('sasa1_elevation', '0', '0', 'S1000005', 14)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('sgant_elevation', '0', '0', 'Z1000014', 15)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('crewlock_pres', '0', '0', 'AIRLOCK000049', 16)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('sgant_xel', '0', '0', 'Z1000015', 17)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('sasa1_azimuth', '0', '0', 'S1000004', 18)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('loopb_flowrate', '0', '0', 'P1000001', 19)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('loopb_pressure', '0', '0', 'P1000002', 20)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('loopb_temp', '0', '0', 'P1000003', 21)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('loopa_flowrate', '0', '0', 'S1000001', 22)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('loopa_pressure', '0', '0', 'S1000002', 23)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('loopa_temp', '0', '0', 'S1000003', 24)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('voltage_1a', '0', '0', 'S4000001', 25)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('voltage_1b', '0', '0', 'S6000004', 26)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('voltage_2a', '0', '0', 'P4000001', 27)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('voltage_2b', '0', '0', 'P6000004', 28)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('voltage_3a', '0', '0', 'S4000004', 29)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('voltage_3b', '0', '0', 'S6000001', 30)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('voltage_4a', '0', '0', 'P4000004', 31)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('voltage_4b', '0', '0', 'P6000001', 32)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('current_1a', '0', '0', 'S4000002', 33)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('current_1b', '0', '0', 'S6000005', 34)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('current_2a', '0', '0', 'P4000002', 35)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('current_2b', '0', '0', 'P6000005', 36)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('current_3a', '0', '0', 'S4000005', 37)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('current_3b', '0', '0', 'S6000002', 38)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('current_4a', '0', '0', 'P4000005', 39)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('current_4b', '0', '0', 'P6000002', 40)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('kuband_transmit', '0', '0', 'Z1000013', 41)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('ptrrj_mode', '0', '0', 'S0000006', 42)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('strrj_mode', '0', '0', 'S0000007', 43)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('psarj_mode', '0', '0', 'S0000008', 44)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('ssarj_mode', '0', '0', 'S0000009', 45)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('russian_mode', '0', '0', 'RUSSEG000001', 46)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('iss_mode', '0', '0', 'USLAB000086', 47)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('iss_mass', '0', '0', 'USLAB000039', 48)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('us_gnc_mode', '0', '0', 'USLAB000012', 49)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('sasa2_elevation', '0', '0', 'P1000005', 50)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('sasa2_azimuth', '0', '0', 'P1000004', 51)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('sasa2_status', '0', '0', 'P1000007', 52)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('sasa1_status', '0', '0', 'S1000009', 53)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('active_sasa', '0', '0', 'USLAB000092', 54)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('position_x', '0', '0', 'USLAB000032', 55)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('position_y', '0', '0', 'USLAB000033', 56)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('position_z', '0', '0', 'USLAB000034', 57)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('velocity_x', '0', '0', 'USLAB000035', 58)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('velocity_y', '0', '0', 'USLAB000036', 59)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('velocity_z', '0', '0', 'USLAB000037', 60)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('PSA_EMU1_VOLTS', '0', '0', 'AIRLOCK000001', 61)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('PSA_EMU1_AMPS', '0', '0', 'AIRLOCK000002', 62)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('PSA_EMU2_VOLTS', '0', '0', 'AIRLOCK000003', 63)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('PSA_EMU2_AMPS', '0', '0', 'AIRLOCK000004', 64)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('PSA_IRU_Utility_VOLTS', '0', '0', 'AIRLOCK000005', 65)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('PSA_IRU_Utility_AMPS', '0', '0', 'AIRLOCK000006', 66)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('UIA_EV_1_VOLTS', '0', '0', 'AIRLOCK000007', 67)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('UIA_EV_1_AMPS', '0', '0', 'AIRLOCK000008', 68)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('UIA_EV_2_VOLTS', '0', '0', 'AIRLOCK000009', 69)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('UIA_EV_2_AMPS', '0', '0', 'AIRLOCK000010', 70)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_AL1A4A_A_RPC_01_Depress_Pump_On_Off_Stat', '0', '0', 'AIRLOCK000047', 71)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Airlock_Depress_Pump_Power_Switch', '0', '0', 'AIRLOCK000048', 72)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Airlock_O2_Hi_P_Supply_Vlv_Actual_Posn', '0', '0', 'AIRLOCK000050', 73)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Airlock_O2_Lo_P_Supply_Vlv_Actual_Posn', '0', '0', 'AIRLOCK000051', 74)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Airlock_N2_Supply_Vlv_Actual_Posn', '0', '0', 'AIRLOCK000052', 75)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Airlock_CCAA_State', '0', '0', 'AIRLOCK000053', 76)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Airlock_PCA_Cabin_Pressure', '0', '0', 'AIRLOCK000054', 77)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Airlock_O2_Hi_P_Supply_Pressure', '0', '0', 'AIRLOCK000055', 78)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Airlock_O2_Lo_P_Supply_Pressure', '0', '0', 'AIRLOCK000056', 79)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Airlock_N2_Supply_Pressure', '0', '0', 'AIRLOCK000057', 80)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node2_MTL_PPA_Avg_Accum_Qty', '0', '0', 'NODE2000001', 81)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node2_LTL_PPA_Avg_Accum_Qty', '0', '0', 'NODE2000002', 82)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node_2_CCAA_State', '0', '0', 'NODE2000003', 83)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node2_LTL_TWMV_Out_Temp', '0', '0', 'NODE2000006', 84)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node2_MTL_TWMV_Out_Temp', '0', '0', 'NODE2000007', 85)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node_3_MCA_ppO2', '0', '0', 'NODE3000001', 86)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node_3_MCA_ppN2', '0', '0', 'NODE3000002', 87)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node_3_MCA_ppCO2', '0', '0', 'NODE3000003', 88)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node_3_UPA_Current_State', '0', '0', 'NODE3000004', 89)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node_3_UPA_WSTA_Qty_Ctrl_Pct', '0', '0', 'NODE3000005', 90)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node_3_WPA_Process_Cmd_Status', '0', '0', 'NODE3000006', 91)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node_3_WPA_Process_Step', '0', '0', 'NODE3000007', 92)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node_3_WPA_Waste_Water_Qty_Ctrl', '0', '0', 'NODE3000008', 93)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node_3_WPA_Water_Storage_Qty_Ctrl', '0', '0', 'NODE3000009', 94)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node_3_OGA_Process_Cmd_Status', '0', '0', 'NODE3000010', 95)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node_3_OGA_O2_Production_Rate', '0', '0', 'NODE3000011', 96)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node3_MTL_TWMV_Out_Temp', '0', '0', 'NODE3000012', 97)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node3_LTL_TWMV_Out_Temp', '0', '0', 'NODE3000013', 98)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node3_MTL_PPA_Avg_Accum_Qty', '0', '0', 'NODE3000017', 99)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node_3_CCAA_State', '0', '0', 'NODE3000018', 100)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Node3_LTL_PPA_Avg_Accum_Qty', '0', '0', 'NODE3000019', 101)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('DCSU_2A_PVCU_On_Off_V_Stat', '0', '0', 'P4000003', 102)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('DCSU_4A_PVCU_On_Off_V_Stat', '0', '0', 'P4000006', 103)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('DCSU_4B_RBI_6_Integ_I', '0', '0', 'P6000002', 104)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('DCSU_4B_PVCU_On_Off_V_Stat', '0', '0', 'P6000003', 105)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('DCSU_2B_PVCU_On_Off_V_Stat', '0', '0', 'P6000006', 106)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_SM_KURS1_On', '0', '0', 'RUSSEG000002', 107)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_SM_KURS2_On', '0', '0', 'RUSSEG000003', 108)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('SM_ECW_KURS_Fail', '0', '0', 'RUSSEG000004', 109)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_SM_KURS_Rng', '0', '0', 'RUSSEG000005', 110)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_SM_KURS_Vel', '0', '0', 'RUSSEG000006', 111)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('SM_KURS_P_Test_Mode_RS', '0', '0', 'RUSSEG000007', 112)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('SM_KURS_P_Capture_Signal_RS', '0', '0', 'RUSSEG000008', 113)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('SM_KURS_P_Target_Acquisition_Signal_RS', '0', '0', 'RUSSEG000009', 114)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('SM_KURS_P_Functional_Mode_Signal_RS', '0', '0', 'RUSSEG000010', 115)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('SM_KURS_P_In_Stand_by_Mode_RS', '0', '0', 'RUSSEG000011', 116)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_SM_Dock_Contact', '0', '0', 'RUSSEG000012', 117)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_SM_Forward_Port_Engaged', '0', '0', 'RUSSEG000013', 118)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_SM_Aft_Port_Engaged', '0', '0', 'RUSSEG000014', 119)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_SM_Nadir_Port_Engaged', '0', '0', 'RUSSEG000015', 120)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_SM_FGB_Nadir_Port_Engaged', '0', '0', 'RUSSEG000016', 121)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_SM_UDM_Nadir_Port_Engaged', '0', '0', 'RUSSEG000017', 122)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_MRM1_Port_Engaged', '0', '0', 'RUSSEG000018', 123)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_MRM2_Port_Engaged', '0', '0', 'RUSSEG000019', 124)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_SM_ETOV_Hooks_Closed', '0', '0', 'RUSSEG000020', 125)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_SM_Act_Att_Ref_Frame', '0', '0', 'RUSSEG000021', 126)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_SM_RS_Is_Master', '0', '0', 'RUSSEG000022', 127)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_SM_Ready_For_Indicator', '0', '0', 'RUSSEG000023', 128)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSProp_SM_Thrstr_Mode_Terminated', '0', '0', 'RUSSEG000024', 129)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RSMCS_SM_SUDN_Mode', '0', '0', 'RUSSEG000025', 130)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('SARJ_Port_Commanded_Position', '0', '0', 'S0000005', 131)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_S01A_C_RPC_01_Ext_1_MDM_On_Off_Stat', '0', '0', 'S0000010', 132)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_S01A_C_RPC_16_S0_1_MDM_On_Off_Stat', '0', '0', 'S0000011', 133)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_S02B_C_RPC_01_Ext_2_MDM_On_Off_Stat', '0', '0', 'S0000012', 134)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_S02B_C_RPC_16_S0_2_MDM_On_Off_Stat', '0', '0', 'S0000013', 135)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_S11A_C_RPC_03_STR_MDM_On_Off_Stat', '0', '0', 'S1000006', 136)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_S11A_C_RPC_16_S1_1_MDM_On_Off_Stat', '0', '0', 'S1000007', 137)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_S12B_B_RPC_05_S1_2_MDM_On_Off_Stat', '0', '0', 'S1000008', 138)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('DCSU_1A_PVCU_On_Off_V_Stat', '0', '0', 'S4000003', 139)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('DCSU_3A_PVCU_On_Off_V_Stat', '0', '0', 'S4000006', 140)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('DCSU_3B_PVCU_On_Off_V_Stat', '0', '0', 'S6000003', 141)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('DCSU_1B_PVCU_On_Off_V_Stat', '0', '0', 'S6000006', 142)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Time of Occurrence', '0', '0', 'TIME_000001', 143)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Year of Occurrence', '0', '0', 'TIME_000002', 144)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_SEQ_CMG1_Online', '0', '0', 'USLAB000001', 145)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_SEQ_CMG2_Online', '0', '0', 'USLAB000002', 146)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_SEQ_CMG3_Online', '0', '0', 'USLAB000003', 147)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_SEQ_CMG4_Online', '0', '0', 'USLAB000004', 148)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_Num_CMGs_Online', '0', '0', 'USLAB000005', 149)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_Unlim_Cntl_Trq_InBody_X', '0', '0', 'USLAB000006', 150)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_Unlim_Cntl_Trq_InBody_Y', '0', '0', 'USLAB000007', 151)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_Unlim_Cntl_Trq_InBody_Z', '0', '0', 'USLAB000008', 152)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_CMG_Mom_Act_Mag', '0', '0', 'USLAB000009', 153)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_CMG_Mom_Act_Cap_Pct', '0', '0', 'USLAB000010', 154)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_Desat_Request_Inh', '0', '0', 'USLAB000011', 155)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_AD_Selected_Att_Source', '0', '0', 'USLAB000013', 156)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_AD_Selected_Rate_Source', '0', '0', 'USLAB000014', 157)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_SD_Selected_State_Source', '0', '0', 'USLAB000015', 158)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_Act_CCDB_Att_Cntl_Type', '0', '0', 'USLAB000016', 159)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_Act_CCDB_Att_Cntl_Ref_Frame', '0', '0', 'USLAB000017', 160)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_PS_Pointing_LVLH_Att_Quatrn_0', '0', '0', 'USLAB000018', 161)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_PS_Pointing_LVLH_Att_Quatrn_1', '0', '0', 'USLAB000019', 162)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_PS_Pointing_LVLH_Att_Quatrn_2', '0', '0', 'USLAB000020', 163)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_PS_Pointing_LVLH_Att_Quatrn_3', '0', '0', 'USLAB000021', 164)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_Att_Error_X', '0', '0', 'USLAB000022', 165)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_Att_Error_Y', '0', '0', 'USLAB000023', 166)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_Att_Error_Z', '0', '0', 'USLAB000024', 167)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_PS_Pointing_Current_Inert_Rate_Vector_X', '0', '0', 'USLAB000025', 168)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_PS_Pointing_Current_Inert_Rate_Vector_Y', '0', '0', 'USLAB000026', 169)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_PS_Pointing_Current_Inert_Rate_Vector_Z', '0', '0', 'USLAB000027', 170)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_Act_CCDB_AttQuatrn_0_Cmd', '0', '0', 'USLAB000028', 171)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_Act_CCDB_AttQuatrn_1_Cmd', '0', '0', 'USLAB000029', 172)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_Act_CCDB_AttQuatrn_2_Cmd', '0', '0', 'USLAB000030', 173)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_Act_CCDB_AttQuatrn_3_Cmd', '0', '0', 'USLAB000031', 174)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_CMG_Mom_Act_Cap', '0', '0', 'USLAB000038', 175)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_PS_Solar_Beta_Angle', '0', '0', 'USLAB000040', 176)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_Loss_Of_CMG_Att_Cntl_Latched_Caution', '0', '0', 'USLAB000041', 177)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CCS_Loss_of_ISS_Attitude_Control_Warning', '0', '0', 'USLAB000042', 178)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_GPS1_Operational_Status', '0', '0', 'USLAB000043', 179)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_GPS2_Operational_Status', '0', '0', 'USLAB000044', 180)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG1_SpinBrg_Temp1', '0', '0', 'USLAB000045', 181)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG2_SpinBrg_Temp1', '0', '0', 'USLAB000046', 182)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG3_SpinBrg_Temp1', '0', '0', 'USLAB000047', 183)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG4_SpinBrg_Temp1', '0', '0', 'USLAB000048', 184)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG1_SpinBrg_Temp2', '0', '0', 'USLAB000049', 185)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG2_SpinBrg_Temp2', '0', '0', 'USLAB000050', 186)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG3_SpinBrg_Temp2', '0', '0', 'USLAB000051', 187)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG4_SpinBrg_Temp2', '0', '0', 'USLAB000052', 188)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('LAB_MCA_ppO2', '0', '0', 'USLAB000053', 189)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('LAB_MCA_ppN2', '0', '0', 'USLAB000054', 190)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('LAB_MCA_ppCO2', '0', '0', 'USLAB000055', 191)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('LAB_LTL_PPA_Avg_Accum_Qty', '0', '0', 'USLAB000056', 192)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('LAB_MTL_PPA_Avg_Accum_Qty', '0', '0', 'USLAB000057', 193)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('LAB_PCA_Cabin_Pressure', '0', '0', 'USLAB000058', 194)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('LAB1P6_CCAA_In_T1', '0', '0', 'USLAB000059', 195)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('LAB_MTL_Regen_TWMV_Out_Temp', '0', '0', 'USLAB000060', 196)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('LAB_LTL_TWMV_Out_Temp', '0', '0', 'USLAB000061', 197)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('LAB_VRS_Vent_Vlv_Posn_Raw', '0', '0', 'USLAB000062', 198)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('LAB_VES_Vent_Vlv_Posn_Raw', '0', '0', 'USLAB000063', 199)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('LAB1P6_CCAA_State', '0', '0', 'USLAB000064', 200)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('LAB1S6_CCAA_State', '0', '0', 'USLAB000065', 201)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LAD11B_A_RPC_07_CC_1_MDM_On_Off_Stat', '0', '0', 'USLAB000066', 202)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LAD52B_A_RPC_03_CC_2_MDM_On_Off_Stat', '0', '0', 'USLAB000067', 203)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LA1A4A_E_RPC_01_CC_3_MDM_On_Off_Stat', '0', '0', 'USLAB000068', 204)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LAD11B_A_RPC_09_Int_1_MDM_On_Off_Stat', '0', '0', 'USLAB000069', 205)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LAD52B_A_RPC_04_Int_2_MDM_On_Off_Stat', '0', '0', 'USLAB000070', 206)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LAD11B_A_RPC_11_PL_1_MDM_On_Off_Stat', '0', '0', 'USLAB000071', 207)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LAD22B_A_RPC_01_PL_2_MDM_On_Off_Stat', '0', '0', 'USLAB000072', 208)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LA1B_B_RPC_14_GNC_1_MDM_On_Off_Stat', '0', '0', 'USLAB000073', 209)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LA2B_E_RPC_03_GNC_2_MDM_On_Off_Stat', '0', '0', 'USLAB000074', 210)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LAD11B_A_RPC_08_PMCU_1_MDM_On_Off_Stat', '0', '0', 'USLAB000075', 211)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LAD52B_A_RPC_01_PMCU_2_MDM_On_Off_Stat', '0', '0', 'USLAB000076', 212)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LA1B_B_RPC_09_LAB_1_MDM_On_Off_Stat', '0', '0', 'USLAB000077', 213)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LA2B_E_RPC_04_LAB_2_MDM_On_Off_Stat', '0', '0', 'USLAB000078', 214)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LA2B_E_RPC_13_LAB_3_MDM_On_Off_Stat', '0', '0', 'USLAB000079', 215)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LA1B_D_RPC_01_LAB_FSEGF_Sys_Pwr_1_On_Off_Stat', '0', '0', 'USLAB000080', 216)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CA_AttMnvr_In_Progress', '0', '0', 'USLAB000081', 217)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Prim_CCS_MDM_Std_Cmd_Accept_Cnt', '0', '0', 'USLAB000082', 218)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Prim_CCS_MDM_Data_Load_Cmd_Accept_Cnt', '0', '0', 'USLAB000083', 219)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Coarse_Time', '0', '0', 'USLAB000084', 220)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Fine_Time', '0', '0', 'USLAB000085', 221)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Prim_CCS_MDM_PCS_Cnct_Cnt', '0', '0', 'USLAB000087', 222)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Ku_HRFM_VBSP_1_Activity_Indicator', '0', '0', 'USLAB000088', 223)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Ku_HRFM_VBSP_2_Activity_Indicator', '0', '0', 'USLAB000089', 224)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Ku_HRFM_VBSP_3_Activity_Indicator', '0', '0', 'USLAB000090', 225)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Ku_HRFM_VBSP_4_Activity_Indicator', '0', '0', 'USLAB000091', 226)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Audio_IAC1_Mode_Indication', '0', '0', 'USLAB000093', 227)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Audio_IAC2_Mode_Indication', '0', '0', 'USLAB000094', 228)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('VDS_Destination_9_Source_ID', '0', '0', 'USLAB000095', 229)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('VDS_Destination_13_Source_ID', '0', '0', 'USLAB000096', 230)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('VDS_Destination_14_Source_ID', '0', '0', 'USLAB000097', 231)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('VDS_Destination_29_Source_ID', '0', '0', 'USLAB000098', 232)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LAD52B_A_RPC_08_UHF_SSSR_1_On_Off_Stat', '0', '0', 'USLAB000099', 233)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('RPCM_LA1B_H_RPC_04_UHF_SSSR_2_On_Off_Stat', '0', '0', 'USLAB000100', 234)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('UHF_Frame_Sync', '0', '0', 'USLAB000101', 235)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_SD_Selected_State_Time_Tag', '0', '0', 'USLAB000102', 236)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG1_IG_Vibration', '0', '0', 'Z1000001', 237)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG2_IG_Vibration', '0', '0', 'Z1000002', 238)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG3_IG_Vibration', '0', '0', 'Z1000003', 239)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG4_IG_Vibration', '0', '0', 'Z1000004', 240)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG1_SpinMtr_Current', '0', '0', 'Z1000005', 241)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG2_SpinMtr_Current', '0', '0', 'Z1000006', 242)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG3_SpinMtr_Current', '0', '0', 'Z1000007', 243)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG4_SpinMtr_Current', '0', '0', 'Z1000008', 244)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG1_Current_Wheel_Speed', '0', '0', 'Z1000009', 245)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG2_Current_Wheel_Speed', '0', '0', 'Z1000010', 246)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG3_Current_Wheel_Speed', '0', '0', 'Z1000011', 247)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('USGNC_CMG4_Current_Wheel_Speed', '0', '0', 'Z1000012', 248)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('eva_crew_1', '0', 'crew1', '0', 249)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('eva_crew_2', '0', 'crew2', '0', 250)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('us_eva_#', '0', '0', '0', 251)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('rs_eva_#', '0', '0', '0', 252)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('last_us_eva_duration', '0', '0', '0', 253)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('last_rs_eva_duration', '0', '0', '0', 254)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('Lightstreamer', '0', 'Unsubscribed', '0', 255)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('ClientStatus', '0', '0', '0', 256)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS MT Position Float', '0', '0', 'CSAMT000001', 257)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS MT Utility Port ID', '0', '0', 'CSAMT000002', 258)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS EDCD SSRMS Base Location', '0', '0', 'CSASSRMS001', 259)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS EDCD SSRMS Base Location2', '0', '0', 'CSASSRMS002', 260)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS EDCD SSRMS Operating Base', '0', '0', 'CSASSRMS003', 261)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('SSRMS SR Measured Joint Position', '0', '0', 'CSASSRMS004', 262)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('SSRMS SY Measured Joint Position', '0', '0', 'CSASSRMS005', 263)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('SSRMS SP Measured Joint Position', '0', '0', 'CSASSRMS006', 264)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('SSRMS EP Measured Joint Position', '0', '0', 'CSASSRMS007', 265)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('SSRMS WP Measured Joint Position', '0', '0', 'CSASSRMS008', 266)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('SSRMS WY Measured Joint Position', '0', '0', 'CSASSRMS009', 267)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('SSRMS WR Measured Joint Position', '0', '0', 'CSASSRMS010', 268)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS Payload Status SSRMS Tip LEE', '0', '0', 'CSASSRMS011', 269)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS Base Location SPDM', '0', '0', 'CSASPDM0001', 270)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS Base Location SPDM2', '0', '0', 'CSASPDM0002', 271)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS SPDM 1 SR Measured Joint Position', '0', '0', 'CSASPDM0003', 272)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS SPDM 1 SY Measured Joint Position', '0', '0', 'CSASPDM0004', 273)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS SPDM 1 SP Measured Joint Position', '0', '0', 'CSASPDM0005', 274)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS SPDM 1 EP Measured Joint Position', '0', '0', 'CSASPDM0006', 275)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS SPDM 1 WP Measured Joint Position', '0', '0', 'CSASPDM0007', 276)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS SPDM 1 WY Measured Joint Position', '0', '0', 'CSASPDM0008', 277)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS SPDM 1 WR Measured Joint Position', '0', '0', 'CSASPDM0009', 278)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS Payload Status OCS SPDM Arm 1 OTCM', '0', '0', 'CSASPDM0010', 279)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS SPDM 2 SR Measured Joint Position', '0', '0', 'CSASPDM0011', 280)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS SPDM 2 SY Measured Joint Position', '0', '0', 'CSASPDM0012', 281)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS SPDM 2 SP Measured Joint Position', '0', '0', 'CSASPDM0013', 282)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS SPDM 2 EP Measured Joint Position', '0', '0', 'CSASPDM0014', 283)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS SPDM 2 WP Measured Joint Position', '0', '0', 'CSASPDM0015', 284)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS SPDM 2 WY Measured Joint Position', '0', '0', 'CSASPDM0016', 285)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS SPDM 2 WR Measured Joint Position', '0', '0', 'CSASPDM0017', 286)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS Payload Status OCS SPDM Arm 2 OTCM', '0', '0', 'CSASPDM0018', 287)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS Payload Status OCS SPDM Arm 2 OTCM2', '0', '0', 'CSASPDM0019', 288)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS SPDM Body Roll Joint Position', '0', '0', 'CSASPDM0020', 289)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS Payload Status OCS SPDM Body', '0', '0', 'CSASPDM0021', 290)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS Payload Status OCS SPDM Body2', '0', '0', 'CSASPDM0022', 291)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS Payload Status MBS MCAS', '0', '0', 'CSAMBS00001', 292)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS Payload Status MBS MCAS2', '0', '0', 'CSAMBS00002', 293)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS Payload Status MBS POA', '0', '0', 'CSAMBA00003', 294)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); rc = sqlite3_exec(db, "INSERT OR IGNORE INTO telemetry VALUES('MSS OCS Payload Status MBS POA2', '0', '0', 'CSAMBA00004', 295)", 0, 0, &zErrMsg); | |
handleSQLiteRC(rc, output, db); | |
#if CLOSEAFTERINIT_SQLITE | |
rc = sqlite3_close(db); | |
handleSQLiteRC(rc, output, db); | |
output->printlnColor("[ISSLIVE-INIT-SQLITE3] Database initialized and connection closed.", ANSI::Color::GREEN); | |
#endif | |
output->printlnColor("[ISSLIVE-INIT-SQLITE3] Database initialized.", ANSI::Color::GREEN); | |
} | |
////UNUSED (not working) | |
//void ISSLIVE_Telemetry::lightstreamerUpdate() | |
//{ | |
// std::vector<LSSubscription*>* subscriptions = lsc->getSubscriptions(); | |
// | |
// for (int i = 0; i < subscriptions->size(); i++) { | |
// //LSTables are the objects containing the LS Data | |
// LSTable* table = subscriptions->at(i)->table_ref; | |
// | |
// output->println("Num objects on sub " + to_string(i) + ": " + to_string(subscriptions->at(i)->getObjectIds().size())); | |
// | |
// for (int j = 0; j < subscriptions->at(i)->getObjectIds().size(); j++) { | |
// vector<string>* values = table->getItemData(j); | |
// | |
// if (values->size() > 0) { | |
// output->println("Size of values: " + to_string(values->size())); | |
// /*cout << "ITEM:" << subscriptions->at(i)->getObjectIds()[j] << endl; | |
// cout << "BID:" << values->at(0) << endl; | |
// cout << "OFFER:" << values->at(1) << endl;*/ | |
// } | |
// | |
// //////// | |
// | |
// /*output->println("Incoming Info:"); | |
// output->println("Num: " + to_string(j)); | |
// output->println("ObjId: " + subscriptions->at(i)->getObjectIds()[j]);*/ | |
// } | |
// } | |
//} | |
// | |
// | |
////UNUSED (not working) | |
//void ISSLIVE_Telemetry::lightstreamerInit() | |
//{ | |
// string ls_url, ls_username, ls_password, ls_adapter; | |
// ls_url = "https://demo-apd.marketdatasystems.com"; | |
// ls_username = "MyIGAccount"; | |
// ls_password = "CST-6bc9d12be108b8a4216e68c0b4b08e04db87f3b4afd2328bac14c9|XST-6895c30224df50889c1ac9cc5263e9864d0cc96404"; | |
// | |
// ls_url = getInst_Parameter("URL")->GetString(); | |
// ls_username = getInst_Parameter("Username")->GetString(); | |
// ls_password = getInst_Parameter("Password")->GetString(); | |
// ls_adapter = getInst_Parameter("Adapter")->GetString(); | |
// | |
// | |
// //instanciates new LSClient object with connection parameters | |
// lsc = new LSClient(ls_url, ls_username, ls_password, ls_adapter); | |
// | |
// | |
// //Adds a new subscription with 2 items to the client. | |
// /*lsc->addSubscription(new LSSubscription("MARKET", | |
// { "MARKET:IX.D.CAC.IMF.IP", | |
// "MARKET:IX.D.DAX.IMF.IP" }, | |
// { "BID","OFFER" }));*/ | |
// | |
// const vector<string> classes{ "TimeStamp", "Value" }; | |
// | |
// lsc->addSubscription(new LSSubscription("MERGE", | |
// { | |
// telemIdentifiers //from TelemIdents.h | |
// }, | |
// { | |
// classes | |
// })); | |
// lsc->addSubscription(new LSSubscription("MERGE", | |
// { | |
// "TIME_000001" | |
// }, | |
// { | |
// "TimeStamp", "Value", "Status.Class", "Status.Indicator" | |
// })); | |
// | |
// output->println("[LSCLIENT] Connecting to LightStreamer..."); | |
// | |
// //starts stream connection thread | |
// lsc->start(); | |
// | |
// //waits until LSClient stream is connected. | |
// while (lsc->getStatus() != LS_STATUS_CONNECTED) { | |
// cout << "."; | |
// sleep(1); | |
// } | |
// | |
// output->println("[LSCLIENT] Connected."); | |
// | |
// //Sends added subscriptions to Lightstreamer control connection. | |
// lsc->subscribeAll(); | |
// } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment