úÎDJ?<      !"#$%&'()*+,-./0123456789:;Alexander Krupenkin 2016BSD3 mail@akru.me experimental POSIX / WIN32Safe ,ROSTime is a tuple of (seconds, nanoseconds)0ROSDuration is a tuple of (seconds, nanoseconds)ROS message is a list of fields7ROS message field is a variable or constant declarationVariable field name and type #Constant field name, type and value Field is a pair of name - value Field name is text encoded KA variant type describing the types that may be included in a ROS message.SA variant type describing the simple types that may be included in a ROS message.  !    !  !     !Alexander Krupenkin 2016BSD3 mail@akru.me experimental POSIX / WIN32Safe<Show simple type=3All of simple type and its text representation list> Line getter?Valid ROS identifier parser@ROS message comments parserA#Parse fields defined in the messageB&Parse constants defined in the message)The ROS message language parser<=>?@AB)))<=>?@AB)Alexander Krupenkin 2016BSD3 mail@akru.me experimental POSIX / WIN32SafeCBuilder creator from  *Like +/ by first argument is custom type modifier hook+2Render formal ROS message definition according to:comments removedwhitespace removed%package names of dependencies removed<constants reordered ahead of other declarations from 0http://www.ros.org/wiki/ROS/Technical%20OverviewC*+*++*C*+Alexander Krupenkin 2016BSD3 mail@akru.me experimental POSIX / WIN32None,0DI,'A type for fixed arrays in ROS messages/!A type for arrays in ROS messagesDSimple D4 type TODO: migrate to more performance vector type,-./01DEFGHIJKL,-./01 ,-./01DEFGHIJKLAlexander Krupenkin 2016BSD3 mail@akru.me experimental POSIX / WIN32None2%Sometime ROS messages have a special Headert field. It used for tracking package sequence, time stamping and frame tagging. Headers is frequently field. The 2O type class lifts header fields on the top of message and abstracting of type.3Get sequence number4Set sequence number5Get timestamp of message6Get frame of message7cHaskell native type for ROS message language described data structure. Serialization guaranted by M> super class. And no more is needed for transfer over socket.8(Get MD5 of formal message representation9Get message type, e.g.  std_msgs/Char23456789,-./012345678978923456,-./0123456789Alexander Krupenkin 2016BSD3 mail@akru.me experimental POSIX / WIN32NoneDOT:0Generate ROS message declarations from .msg file;GQQ for data type and instances generation from ROS message declarationN"Take user type from text type nameO+Take list of external types used in messagePField to Type converterQtEnsure that field and constant names are valid Haskell identifiers and do not coincide with Haskell reserved words.R%Sanitize identifier for valid HaskellS\Generate the name of the Haskell type that corresponds to a flat (i.e. non-array) ROS type.TDefault value of fieldU(Field definition to record var converterV4Generate the getDigest Message class implementation W2Generate the getType Message class implementation XLens signatureY©Given a record field name, produces a single function declaration: lensName :: forall f. Functor f => (a -> f a') -> b -> f b' lensName f a = (x -> a { field = x }) Z& f (field a) FROM: Lens.Family.THCore['Instance declaration with empty context\1Simple data type declaration with one constructor]Simple function declaration^Lenses declarations_Data type declaration`Binary instance declarationaDefault instance declarationbMessage instance declarationcStamped instance declarationd5TemplateHaskell codegen from the ROS message languagee!Simple parse ROS message and show:;NOPQRSTUVWXY[\]^_`abcde:;;::;NOPQRSTUVWXY[\]^_`abcdef      !"#$%&'()*+,-./012345567789:;<=>?@A2BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno%rosmsg-0.4.4.0-9qtyjFVGta1FGG7w88K8FkRobotics.ROS.Msg.ParserRobotics.ROS.Msg.TypesRobotics.ROS.Msg.RenderRobotics.ROS.MsgRobotics.ROS.Msg.THRobotics.ROS.Msg.ROSArray*attoparsec-0.13.0.2-B41e2QofYwJK7IB6JlBKN1Data.Attoparsec.Text.LazyparseDoneFailResultROSTime ROSDuration MsgDefinitionFieldDefinitionVariableConstantField FieldName FieldTypeSimpleCustomArray FixedArray SimpleTypeRBoolRByteRCharRInt8RUInt8RInt16RUInt16RInt32RUInt32RInt64RUInt64RFloat32RFloat64RStringRTime RDuration$fShowSimpleType$fEnumSimpleType$fEqSimpleType$fShowFieldType $fEqFieldType$fShowFieldDefinition$fEqFieldDefinitionrosmsgrender'render ROSFixedArray unFixedArrayROSArrayunArrayStamped getSequence setSequencegetStampgetFrameMessage getDigestgetType rosmsgFromshowType simpleAssoctakeLine identifiercommentvariableParserconstantParserrosTypesizemodify$fBinaryROSFixedArray$fDefaultROSFixedArray$fMonoidROSFixedArray$fBinaryROSArray$fDefaultROSArray$fMonoidROSArraybinary-0.8.3.0Data.Binary.ClassBinary customType externalTypestypeQ sanitizeFieldsanitize mkFlatTypedefValuefieldQ mkGetDigest mkGetTypelensSig deriveLensbaseGHC.Basefmap instanceD'dataD'funD'mkLensesmkDatamkBinary mkDefault mkMessage mkStamped quoteMsgDec quoteMsgExp