| 224 | } |
| 225 | |
| 226 | void cSimpleMessageSender::sendPeriodicMessage(FLOAT_DMEM *v, int firstElementIndex, int Nv, long vi, double tm) |
| 227 | { |
| 228 | if (!useJsonFormat) { |
| 229 | cComponentMessage msg; |
| 230 | memset(&msg, 0, sizeof(msg)); |
| 231 | strncpy(msg.msgtype, messageType, CMSG_typenameLen); |
| 232 | strncpy(msg.msgname, messageName, CMSG_typenameLen); |
| 233 | if (v != NULL) { |
| 234 | for (int i = 0; i < Nv && i < CMSG_nUserData; i++) { |
| 235 | msg.floatData[i] = v[firstElementIndex + i]; |
| 236 | } |
| 237 | } |
| 238 | msg.intData[0] = 0; |
| 239 | msg.readerTime = tm; |
| 240 | msg.userTime1 = (double)vi; |
| 241 | sendMessage(&msg); |
| 242 | } else { |
| 243 | rapidjson::Document doc; |
| 244 | doc.SetObject(); |
| 245 | rapidjson::Document::AllocatorType& allocator = doc.GetAllocator(); |
| 246 | doc.AddMember("msgtype", rapidjson::Value(messageType, allocator), allocator); |
| 247 | doc.AddMember("msgname", rapidjson::Value(messageName, allocator), allocator); |
| 248 | rapidjson::Value fields(rapidjson::kObjectType); |
| 249 | const FrameMetaInfo *fmeta = reader_->getFrameMetaInfo(); |
| 250 | for (int i = 0; i < Nv; i++) { |
| 251 | long arrIdx; |
| 252 | long el = fmeta->elementToFieldIdx(i, &arrIdx); |
| 253 | FieldMetaInfo &field = fmeta->field[el]; |
| 254 | if (field.N <= 1) { |
| 255 | // non-array field |
| 256 | fields.AddMember(rapidjson::Value(field.name, allocator), rapidjson::Value(v[firstElementIndex + i]), allocator); |
| 257 | } else { |
| 258 | // array field |
| 259 | rapidjson::Value arrayField(rapidjson::kArrayType); |
| 260 | for (int j = arrIdx; j < field.N && i < Nv; j++, i++) { |
| 261 | arrayField.PushBack(v[firstElementIndex + i], allocator); |
| 262 | } |
| 263 | fields.AddMember(rapidjson::Value(field.name, allocator), arrayField, allocator); |
| 264 | } |
| 265 | } |
| 266 | doc.AddMember("fields", fields, allocator); |
| 267 | doc.AddMember("time", tm, allocator); |
| 268 | doc.AddMember("vIdx", int(vi), allocator); |
| 269 | sendJsonMessage(doc); |
| 270 | } |
| 271 | } |
| 272 | |
| 273 | void cSimpleMessageSender::sendEventMessage(FLOAT_DMEM *v, int Nv, const char * text, FLOAT_DMEM ref, long vi, double tm) |
| 274 | { |
nothing calls this directly
no test coverage detected