Skip to content

Commit f23816d

Browse files
committed
Treat actions like other topics
1 parent 4393775 commit f23816d

File tree

2 files changed

+39
-11
lines changed

2 files changed

+39
-11
lines changed

utils/fields.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ fields.parsePrimitive = function(fieldType, fieldValue) {
7676
else if (fieldType === 'float64') {
7777
parsedValue = parseFloat(fieldValue);
7878
}
79+
// else if (fieldType === 'time') {
80+
// parsedValue.secs = parseInt(fieldValue.secs);
81+
// parsedValue.nsecs = parseInt(fieldValue.nsecs);
82+
// }
7983

8084
return parsedValue;
8185
};
@@ -120,6 +124,14 @@ fields.serializePrimitive =
120124
bufferOffset += 4;
121125
buffer.write(fieldValue, bufferOffset, 'ascii');
122126
}
127+
// else if (fieldType === 'time') {
128+
// console.log("serializePrimitive, time", fieldValue);
129+
// buffer.writeUInt32LE(fieldValue.secs, bufferOffset);
130+
// buffer.writeUInt32LE(fieldValue.nsecs, bufferOffset+4);
131+
// }
132+
133+
// console.log("serialize", fieldType, fieldValue,
134+
// buffer.toString('ascii'), bufferOffset);
123135
}
124136

125137
fields.deserializePrimitive = function(fieldType, buffer, bufferOffset) {
@@ -251,10 +263,11 @@ fields.getArraySize = function(arrayType, array) {
251263
fields.getMessageSize = function(message) {
252264
var that = this
253265
, messageSize = 0
254-
, fields = message.fields
266+
, innerfields = message.fields
255267
;
268+
// console.log("getMessageSize", message);
256269

257-
fields.forEach(function(field) {
270+
innerfields.forEach(function(field) {
258271
var fieldValue = message[field.name];
259272
if (that.isPrimitive(field.type)) {
260273
messageSize += that.getPrimitiveSize(field.type, fieldValue);

utils/messages.js

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ var registry = {};
6262
...
6363
}
6464
},
65-
action: { Goal: ..,
66-
Result: ..,
67-
Feedback: ..
68-
}
65+
// action: { Goal: ..,
66+
// Result: ..,
67+
// Feedback: ..
68+
// }
6969
},
7070
'packagename2': {..}
7171
};
@@ -120,14 +120,18 @@ function setMessageInRegistry(messageType, message, type, subtype) {
120120
if (type == "msg") {
121121
// message
122122
registry[packageName][type][messageName] = message;
123+
} else if (type == "action") {
124+
// action
125+
// concating subtype "Goal", "Result", or "Feedback"
126+
registry[packageName]["msg"][messageName + subtype] = message;
123127

124128
} else {
125-
// service or action
129+
// service
126130
if (!registry[packageName][type][messageName]) {
127131
registry[packageName][type][messageName] = {};
128132
}
129133

130-
var serviceType = subtype; // "Request" or "Response", or "Goal", "Result", "Feedback"
134+
var serviceType = subtype; // "Request" or "Response"
131135
registry[packageName][type][messageName][serviceType] = message;
132136
}
133137
}
@@ -165,21 +169,21 @@ function getMessageFromFile(messageType, filePath, type, callback) {
165169
if (type == "msg") {
166170
message = buildMessageClass(details);
167171
setMessageInRegistry(messageType, message, type);
168-
callback(null);
172+
callback(null, message);
169173
} else if (type == "srv") {
170174
request = buildMessageClass(details.request);
171175
response = buildMessageClass(details.response);
172176
setMessageInRegistry(messageType, request, type, "Request");
173177
setMessageInRegistry(messageType, response, type, "Response");
174-
callback(null);
178+
callback(null, message);
175179
} else if (type == "action") {
176180
goal = buildMessageClass(details.goal);
177181
result = buildMessageClass(details.result);
178182
feedback = buildMessageClass(details.feedback);
179183
setMessageInRegistry(messageType, goal, type, "Goal");
180184
setMessageInRegistry(messageType, result, type, "Result");
181185
setMessageInRegistry(messageType, feedback, type, "Feedback");
182-
callback(null);
186+
callback(null, message);
183187
} else {
184188
console.log("unknown service", type);
185189
}
@@ -220,6 +224,14 @@ function parseMessageFile(fileName, details, type, callback) {
220224
rtv.request.md5 = rtv.response.md5 = calculateMD5(rtv, "srv");
221225
callback(null, rtv);
222226
} else if (type == "action") {
227+
// TODO: need to create the action-prefix message types,
228+
// too, where we wrap the message like this:
229+
// Header header
230+
// actionlib_msgs/GoalID goal_id
231+
// ShapeGoal goal
232+
//
233+
// see /opt/ros/indigo/share/turtle_actionlib/msg/ShapeGoal.msg
234+
223235
// actions treat each message type as independent, each
224236
// with their own md5sum
225237
var rtv = {
@@ -292,6 +304,8 @@ function calculateMD5(details, type) {
292304
console.log("calculateMD5: Unknown type", type);
293305
return null;
294306
}
307+
308+
console.log("calculateMD5:", details.messageType, " text:", text);
295309
return md5(text);
296310
}
297311

@@ -559,6 +573,7 @@ function serializeMessage(message, bufferInfo) {
559573
bufferInfo.buffer = [buffer];
560574
bufferInfo.length = bufferSize;
561575

576+
// console.log("serializeMessage", buffer.toString('hex'));
562577
return bufferInfo;
563578
}
564579

0 commit comments

Comments
 (0)