Warning Request - for requesting warnings from Phairwell

 WiSARIIII
 <warningRequest/>

Warning Response - 3 tier severity levels. 1 being the most critical.

 WiSARIIII
 <warning>
 	<source type="UAV" id="1032"> 	<!-- There may be many different telemetry sources, need unique identifier -->

	<time>
		<year> </year>
		<month> </month>
		<day> </day>
		<hour> </hour>
		<min> </min>
		<sec> </sec>
		<milli> </milli>
	</time>

        <severity> </severity>

        <message>  </message>
</warning>  
 

Stream Request - for requesting video streams

 WiSARIIII
 <streamRequest>
	<!--- channel is required -->	
	<channel type="video|still" id=int />

	<!--- everything in control is OPTIONAL --->
	<control>	
		<includeTelemetry type="last|interpolated|all" filter="all|tag">

		<includeMeta when="once|all" />   	<!-- the image meta data (size, formaT) shouldnt change
								after it has been sent once -->

		<includeTiming value="true|false" /> 	<!-- optionally include timing information; useful for
								real-time playback (e.g., where there may
								have been dropped frames and we dont want
								to make the video jerk forward -->

		<includeID value="true|false" />	<!-- I won't store these, but instead will seek based
								on the frame number.... -->

		<seek startAt="frameNumber" pause="true|false">	<!-- startAt can be empty if the user want
									to start with paused stream? -->

		<!--- processing is performed in real-time on the wonderbox for
 			the subscriber - NOT on the source imagery.  It is needed
			(for me) because i may be displaying on space-constrained devices
			with weak processing units... we could also include things like brightness
			and contrast here.  -->
		<process>
			<resize width="320" height="240" />	<!-- resize is always performed before window -->
			<window x1="100" y1="50" x2="200" y2="200" />
			<colorMode value="rgb|grey" />
		</process>
		

		<log enable="true|false">	<!-- if logging is disabled, seeking is not possible 
							We include this control mainlt for debugging purposes
						-->

		<echoControl enable="true|false|intital">	<!-- if enabled, anytime a control value is changed the set of control values is echoed.
									if initial is set, the control values are sent only initially. -->
									
	</control>
 </streamRequest>

Frame - a video frame response from the WonderBox

 WiSARIIII
 <frame>
 	<meta>
 		<compression type="uncompressed|jpeg|huffyuv" />	 
		<size width="640" height="480">
		<origin x="0" y="0"> <!-- We can set a region of interest in the frame request -->
		<channels>3</channels><!-- We do support IR... in the future -->
	</meta>

	<device>0</device><!-- essentially the video port -->

	<!-- this is retiming info, for playback - especially during seek, where we could return faster than capture does -->
	<timing>
		<captureTime>yyyymmddhhmmsszzz</delta>	<!-- year, month, day, hour, minute, second, millseconds of capture time -->
	</timing>

	<!-- on second thought, this id can be made into a simple integer representing the frame
		offset since the server began recording on this channel.  This would allow
		for unique identification of roughly 30,000 hours of video. We're safe with this.
		Of course, when you seek, you need to specify the channel and type.  

		Also, since we support this type of definition, we dont need to worry
		about telling the user how many frames are available.

		-->
	<id>32442</id>


	<!-- Length specified the number of RGB bytes following this packet under normal transmission.
	     Note that the optional useShared property indicates that the image data
             is stored in a shared memory segment, rather than following the packet. The
             sharedSegmentName is the name of the memory segment where the pixel data resides. -->
	<data length="" [useShared="sharedSegmentName"] >
	
	<!-- do we include a list of telemetry?  Or do we only allow the user to receive a single type? -->
	<telemetrys>
		<telemetry />
		<telemetry />
	</telemetrys>
 </frame>DATA

Telemetry packet

 <telemetry>
	
	<source type="UAV" id="1032"> 	<!-- There may be many different telemetry sources, need unique identifier -->

	<tags>
		<tag name="" value="">
	</tags>

	<time>
		<year> </year>
		<month> </month>
		<day> </day>
		<hour> </hour>
		<min> </min>
		<sec> </sec>
		<milli> </milli>
	</time>

	<location>
		<lat> </lat>
		<lon> </lon>
		<alt> </alt>
	</location>
 
	<pose>
		<roll></roll>
		<pitch></pitch>
		<yaw></yaw>
	</pose>

	<cameras>
		<camera type="video" name="main gimbal"> 
			<lat> </lat>
			<lon> </lon>
			<alt> </alt>
			<elevation> </elevation>
			<azimuth> </azimuth>
		</camera>
	</cameras>

 </telemetry>

Request a telemetry stream

<telemetryRequest/>

Indicate (from a client) that you have frames for the WonderServer to log

<frameSource/>

Request info from the db about a particular channel

<getChannelInfo>
     <channel>1</channel>
</getChannelInfo>

Channel info response to the channel info request above

<channelInfo>
     <totalFrames>1233</totalFrames>
</channelInfo>

Request a single frame

<frameRequest>
      <channel>1</channel>
      <offset>123</offset>
      <useShared>nameOfSharedMemorySegment</useShared>
</frameOffset>

Configure the request cache

<cacheConfig>
      <min></min>
      <max></max>
</cacheConfig>
wisar/wonderbox-xml-protocol.txt · Last modified: 2014/08/11 19:24 by tmburdge
Back to top
CC Attribution-Share Alike 4.0 International
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0