implemented array support on client and server
This commit is contained in:
@@ -109,10 +109,15 @@ public:
|
||||
fprintf(stderr, ">> registering %s.%s [%p]\n", dsPath.Buffer(),
|
||||
signalName.Buffer(), mmb);
|
||||
|
||||
uint8 dims = 0;
|
||||
uint32 elems = 1;
|
||||
(void)dataSourceIn.GetSignalNumberOfDimensions(dsIdx, dims);
|
||||
(void)dataSourceIn.GetSignalNumberOfElements(dsIdx, elems);
|
||||
|
||||
// Register canonical name
|
||||
StreamString dsFullName;
|
||||
dsFullName.Printf("%s.%s", dsPath.Buffer(), signalName.Buffer());
|
||||
service->RegisterSignal(addr, type, dsFullName.Buffer());
|
||||
service->RegisterSignal(addr, type, dsFullName.Buffer(), dims, elems);
|
||||
|
||||
// Register alias
|
||||
if (functionName != NULL_PTR(const char8 *)) {
|
||||
@@ -140,29 +145,21 @@ public:
|
||||
if (gamRef.IsValid()) {
|
||||
StreamString absGamPath;
|
||||
DebugService::GetFullObjectName(*(gamRef.operator->()), absGamPath);
|
||||
// Register full path (InputSignals/OutputSignals)
|
||||
// gamFullName.fPrintf(stderr, "%s.%s.%s", absGamPath.Buffer(),
|
||||
// dirStr, signalName.Buffer()); signalInfoPointers[i] =
|
||||
// service->RegisterSignal(addr, type, gamFullName.Buffer()); Also
|
||||
// register short path (In/Out) for GUI compatibility
|
||||
// Register short path (In/Out) for GUI compatibility
|
||||
gamFullName.Printf("%s.%s.%s", absGamPath.Buffer(), dirStrShort,
|
||||
signalName.Buffer());
|
||||
signalInfoPointers[i] =
|
||||
service->RegisterSignal(addr, type, gamFullName.Buffer());
|
||||
service->RegisterSignal(addr, type, gamFullName.Buffer(), dims, elems);
|
||||
} else {
|
||||
// Fallback to short name
|
||||
// gamFullName.fPrintf(stderr, "%s.%s.%s", functionName, dirStr,
|
||||
// signalName.Buffer()); signalInfoPointers[i] =
|
||||
// service->RegisterSignal(addr, type, gamFullName.Buffer()); Also
|
||||
// register short form
|
||||
// Fallback to short form
|
||||
gamFullName.Printf("%s.%s.%s", functionName, dirStrShort,
|
||||
signalName.Buffer());
|
||||
signalInfoPointers[i] =
|
||||
service->RegisterSignal(addr, type, gamFullName.Buffer());
|
||||
service->RegisterSignal(addr, type, gamFullName.Buffer(), dims, elems);
|
||||
}
|
||||
} else {
|
||||
signalInfoPointers[i] =
|
||||
service->RegisterSignal(addr, type, dsFullName.Buffer());
|
||||
service->RegisterSignal(addr, type, dsFullName.Buffer(), dims, elems);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@ struct DebugSignalInfo {
|
||||
void* memoryAddress;
|
||||
TypeDescriptor type;
|
||||
StreamString name;
|
||||
uint8 numberOfDimensions;
|
||||
uint32 numberOfElements;
|
||||
volatile bool isTracing;
|
||||
volatile bool isForcing;
|
||||
uint8 forcedValue[1024];
|
||||
|
||||
@@ -272,7 +272,9 @@ void DebugService::PatchRegistry() {
|
||||
|
||||
DebugSignalInfo *DebugService::RegisterSignal(void *memoryAddress,
|
||||
TypeDescriptor type,
|
||||
const char8 *name) {
|
||||
const char8 *name,
|
||||
uint8 numberOfDimensions,
|
||||
uint32 numberOfElements) {
|
||||
printf("<debug> registering: %s\n", name);
|
||||
mutex.FastLock();
|
||||
DebugSignalInfo *res = NULL_PTR(DebugSignalInfo *);
|
||||
@@ -290,6 +292,8 @@ DebugSignalInfo *DebugService::RegisterSignal(void *memoryAddress,
|
||||
res->memoryAddress = memoryAddress;
|
||||
res->type = type;
|
||||
res->name = name;
|
||||
res->numberOfDimensions = numberOfDimensions;
|
||||
res->numberOfElements = numberOfElements;
|
||||
res->isTracing = false;
|
||||
res->isForcing = false;
|
||||
res->internalID = sigIdx;
|
||||
@@ -1167,9 +1171,9 @@ void DebugService::Discover(BasicTCPSocket *client) {
|
||||
DebugSignalInfo *sig = signals[aliases[i].signalIndex];
|
||||
const char8 *typeName =
|
||||
TypeDescriptor::GetTypeNameFromTypeDescriptor(sig->type);
|
||||
line.Printf(" {\"name\": \"%s\", \"id\": %d, \"type\": \"%s\"",
|
||||
line.Printf(" {\"name\": \"%s\", \"id\": %d, \"type\": \"%s\", \"dimensions\": %u, \"elements\": %u",
|
||||
aliases[i].name.Buffer(), sig->internalID,
|
||||
typeName ? typeName : "Unknown");
|
||||
typeName ? typeName : "Unknown", sig->numberOfDimensions, sig->numberOfElements);
|
||||
EnrichWithConfig(aliases[i].name.Buffer(), line);
|
||||
line += "}";
|
||||
s = line.Size();
|
||||
@@ -1195,10 +1199,16 @@ void DebugService::Discover(BasicTCPSocket *client) {
|
||||
const char8 *typeName = TypeDescriptor::GetTypeNameFromTypeDescriptor(
|
||||
monitoredSignals[i].dataSource->GetSignalType(
|
||||
monitoredSignals[i].signalIdx));
|
||||
line.Printf(" {\"name\": \"%s\", \"id\": %u, \"type\": \"%s\"",
|
||||
|
||||
uint8 dims = 0;
|
||||
uint32 elems = 1;
|
||||
(void)monitoredSignals[i].dataSource->GetSignalNumberOfDimensions(monitoredSignals[i].signalIdx, dims);
|
||||
(void)monitoredSignals[i].dataSource->GetSignalNumberOfElements(monitoredSignals[i].signalIdx, elems);
|
||||
|
||||
line.Printf(" {\"name\": \"%s\", \"id\": %u, \"type\": \"%s\", \"dimensions\": %u, \"elements\": %u",
|
||||
monitoredSignals[i].path.Buffer(),
|
||||
monitoredSignals[i].internalID,
|
||||
typeName ? typeName : "Unknown");
|
||||
typeName ? typeName : "Unknown", dims, elems);
|
||||
EnrichWithConfig(monitoredSignals[i].path.Buffer(), line);
|
||||
line += "}";
|
||||
s = line.Size();
|
||||
|
||||
@@ -46,7 +46,8 @@ public:
|
||||
virtual bool Initialise(StructuredDataI &data);
|
||||
|
||||
DebugSignalInfo *RegisterSignal(void *memoryAddress, TypeDescriptor type,
|
||||
const char8 *name);
|
||||
const char8 *name, uint8 numberOfDimensions = 0,
|
||||
uint32 numberOfElements = 1);
|
||||
void ProcessSignal(DebugSignalInfo *signalInfo, uint32 size,
|
||||
uint64 timestamp);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user