Test parsing, MD5 computation, and Haskell code generation for messages defined in the actionlib_msgs package, and a message including string constants (whose quotation escaping behavior is easy to get wrong!). Fixes #21
GHC 7.8 warns that join shouldn't be shadowed when importing Prelude, so we explicitly hide it. This generates its own warning... so that's neat.
This means MD5 computation is done with the original string constant definition. Addresses #21
…y importing Data.Default.Generics and doing (def :: <message type>).
Capitalize filename for message module.
Addressed a deprecation warning associated with the binary upgrade. Simplified various socket interactions with more consistent use of strict ByteStrings.
This encompasses the Master/Slave APIs, the Parameter Server API, and, eventually, the Services API.
We ensure that we have a valid type name in one place. Note that the only property we currently check is that the name is capitalized. We should also check against a list of Haskell reserved words. Finishes fix for #18
I don't think removing the quotation marks is consistent with the spec, but it isn't entirely clear. Partially fixes #18
ROS specifies that we serialize booleans as a single byte, while there is an instance of Haskell's 'Storable' class for 'Bool' that uses four bytes for each boolean value. We handle individual boolean values with the 'RosBinary' instance for the Haskell 'Bool' type (i.e. one byte for each boolean). We must handle arrays of booleans specially as the serialized form must still be one byte per value. This approach uses Bool on the Haskell side, while serializing to and from ROS peers using one-byte-per-boolean for top-level boolean fields, variable-length arrays of boolean values, and fixed-length arrays of boolean values. Fixes #15
Consume leading spaces and comments before trying to parse fields and constants. This results in a message type isomorphic to the unit type. Closes #13
Some communication with roscpp nodes was causing trouble for roshask due to an implicit string type annotation in XML-RPC. According to the spec, an XML-RPC value such as "<value></value>" should be interpreted as an empty string. haxr was instead looking for "<value><string></string></value>" for such values. I patched haxr to accept unwrapped text as a string value. Fixes #14
While the RosBinary instance handles serialization of Haskell Bool values to and from a single byte, the Storable instance for Bool uses four bytes. A problem then occurs when we want to use a Storable Vector to hold boolean values. If we receive four bytes for an array of boolean values from a peer, that is four distinct booleans, but the Storable instance for Bool wants the Vector of length four to use 16 bytes. Instead, we simply map the Ros bool type to a Haskell Word8 for now. Fixes #15
This change should have no effect on x86.
Fixed bug in sandbox directory detection. Unregistering roshask-generated packages now works in sandboxes.
This means that generate message definition packages are installed in the same sandbox as roshask itself if it is installed in a sandbox.
We must ensure that roshask's dependency on Cabal is consistent with the version available when the cabal-install program runs our custom Setup.hs. This is fragile and probably not yet right.
We need to find package dependencies to generate message definitions. These are specified somewhat differently in catkin package.xml files than they were in the previous build system's manifest.xml files.
With GHC 7.6.3, we can't derive a Typeable instance for Topic, but going forward hand-written Typeable instances are disallowed. Instead, we now dynamically type just the payload of a 'Topic IO' as this is the only thing we need to abstract over to deal with publishing.