kopia lustrzana https://github.com/cyoung/stratux
				
				
				
			
		
			
				
	
	
		
			64 wiersze
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
			
		
		
	
	
			64 wiersze
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
| //
 | |
| // Copyright 2015, Oliver Jowett <oliver@mutability.co.uk>
 | |
| //
 | |
| 
 | |
| // This file is free software: you may copy, redistribute and/or modify it  
 | |
| // under the terms of the GNU General Public License as published by the
 | |
| // Free Software Foundation, either version 2 of the License, or (at your  
 | |
| // option) any later version.  
 | |
| //
 | |
| // This file is distributed in the hope that it will be useful, but  
 | |
| // WITHOUT ANY WARRANTY; without even the implied warranty of  
 | |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  
 | |
| // General Public License for more details.
 | |
| //
 | |
| // You should have received a copy of the GNU General Public License  
 | |
| // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |
| 
 | |
| #ifndef DUMP978_READER_H
 | |
| #define DUMP978_READER_H
 | |
| 
 | |
| #include <stdint.h>
 | |
| 
 | |
| struct dump978_reader;
 | |
| 
 | |
| typedef enum { UAT_UPLINK, UAT_DOWNLINK } frame_type_t;
 | |
| 
 | |
| // Function pointer type for a handler called by dump978_read_frames().
 | |
| // It is called with arguments:
 | |
| //   t: frame type (UAT_UPLINK or UAT_DOWNLINK)
 | |
| //   f: pointer to frame data buffer
 | |
| //   l: length of frame data
 | |
| //   d: value of handler_data passed to dump978_read_frames
 | |
| // The frame data buffer is a shared buffer owned by the caller
 | |
| // and may be reused after return; if the handler needs to
 | |
| // preserve the data after returning, it should take a copy.
 | |
| typedef void (*frame_handler_t)(frame_type_t t,uint8_t *f,int l,void *d);
 | |
| 
 | |
| // Allocate a new reader that reads from file descriptor 'fd'.
 | |
| // If 'nonblock' is nonzero, the FD will be made nonblocking.
 | |
| // Returns the reader, or NULL on error with errno set.
 | |
| struct dump978_reader *dump978_reader_new(int fd, int nonblock);
 | |
| 
 | |
| // Free a reader previously created by dump978_reader_new.
 | |
| // Does not close the underlying file descriptor.
 | |
| void dump978_reader_free(struct dump978_reader *reader);
 | |
| 
 | |
| // Read frames from the given reader.
 | |
| // Pass complete frames to 'handler', passing 'handler_data'
 | |
| // as the 4th argument.
 | |
| //
 | |
| // Returns a positive number of frames read on success.
 | |
| // Returns 0 on EOF
 | |
| // Returns <0 on error with errno set.
 | |
| // If the underlying FD is nonblocking and no frames are
 | |
| // available, returns <0 with errno = EAGAIN/EINTR/EWOULDBLOCK.
 | |
| int dump978_read_frames(struct dump978_reader *reader,
 | |
|                         frame_handler_t handler,
 | |
|                         void *handler_data);
 | |
| 
 | |
| #endif
 | |
| 
 | |
| 
 | |
|                          
 |