Browse Source

Report extra padding only if IPECAMERA_DEBUG_HARDWARE is set

Suren A. Chilingaryan 9 years ago
parent
commit
88de46052e
3 changed files with 32 additions and 8 deletions
  1. 14 0
      apps/grab.c
  2. 16 6
      private.h
  3. 2 2
      reader.c

+ 14 - 0
apps/grab.c

@@ -1,10 +1,22 @@
 #include <stdio.h>
+#include <stdlib.h>
 
 #include <pcilib.h>
 #include <pcilib/error.h>
 
 #include <ipecamera.h>
 
+void log_error(void *arg, const char *file, int line, pcilib_log_priority_t prio, const char *format, va_list ap) {
+    vprintf(format, ap);
+    printf("\n");
+
+    if (prio == PCILIB_LOG_ERROR) {
+	printf("Exiting at [%s:%u]\n\n", file, line);
+	exit(-1);
+    }
+}
+
+
 int main() {
     int err;
     pcilib_event_id_t evid;
@@ -14,6 +26,8 @@ int main() {
     void *data;
     FILE *f;
 
+    pcilib_set_logger(PCILIB_LOG_WARNING, &log_error, NULL);
+
     pcilib_t *pcilib = pcilib_open("/dev/fpga0", "ipecamera");
     if (!pcilib) pcilib_error("Error opening device");
 

+ 16 - 6
private.h

@@ -8,9 +8,10 @@
 
 #define IPECAMERA_DEBUG
 #ifdef IPECAMERA_DEBUG
-//# define IPECAMERA_DEBUG_RAW_FRAMES
-# define IPECAMERA_DEBUG_BROKEN_FRAMES
-# define IPECAMERA_DEBUG_RAW_PACKETS
+//# define IPECAMERA_DEBUG_RAW_FRAMES		//**< Store all raw frames */
+# define IPECAMERA_DEBUG_BROKEN_FRAMES		//**< Store broken frames in the specified directory */
+# define IPECAMERA_DEBUG_RAW_PACKETS		//**< Store all raw packets read from DMA grouped in frames */
+# define IPECAMERA_DEBUG_HARDWARE		//**< Produce various debugging information about ipecamera operation */
 #endif /* IPECAMERA_DEBUG */
 
 //#define IPECAMERA_BUG_MISSING_PAYLOAD		//**< CMOSIS fails to provide a first payload for each frame, therefore the frame is 32 bit shorter */
@@ -72,13 +73,22 @@
 # define IPECAMERA_DEBUG_BROKEN_FRAMES_BUFFER(function, ...)
 #endif /* IPECAMERA_DEBUG_BROKEN_FRAMES */
 
-#ifdef IPECAMERA_IPECAMERA_DEBUG_RAW_PACKETS
+#ifdef IPECAMERA_DEBUG_RAW_PACKETS
 # define IPECAMERA_DEBUG_RAW_PACKETS_MESSAGE(function, ...) pcilib_debug_message (#function, __FILE__, __LINE__, __VA_ARGS__) 
 # define IPECAMERA_DEBUG_RAW_PACKETS_BUFFER(function, ...) pcilib_debug_data_buffer (#function, __VA_ARGS__) 
-#else /* IPECAMERA_IPECAMERA_DEBUG_RAW_PACKETS */
+#else /* IPECAMERA_DEBUG_RAW_PACKETS */
 # define IPECAMERA_DEBUG_RAW_PACKETS_MESSAGE(function, ...)
 # define IPECAMERA_DEBUG_RAW_PACKETS_BUFFER(function, ...)
-#endif /* IPECAMERA_IPECAMERA_DEBUG_RAW_PACKETS */
+#endif /* IPECAMERA_DEBUG_RAW_PACKETS */
+
+#ifdef IPECAMERA_DEBUG_HARDWARE
+# define IPECAMERA_DEBUG_HARDWARE_MESSAGE(function, ...) pcilib_debug_message (#function, __FILE__, __LINE__, __VA_ARGS__) 
+# define IPECAMERA_DEBUG_HARDWARE_BUFFER(function, ...) pcilib_debug_data_buffer (#function, __VA_ARGS__) 
+#else /* IPECAMERA_DEBUG_HARDWARE */
+# define IPECAMERA_DEBUG_HARDWARE_MESSAGE(function, ...)
+# define IPECAMERA_DEBUG_HARDWARE_BUFFER(function, ...)
+#endif /* IPECAMERA_DEBUG_HARDWARE */
+
 
 #define ipecamera_debug(function, ...) \
     IPECAMERA_DEBUG_##function##_MESSAGE(IPECAMERA_DEBUG_##function, __VA_ARGS__)

+ 2 - 2
reader.c

@@ -110,7 +110,7 @@ static int ipecamera_data_callback(void *user, pcilib_dma_flags_t flags, size_t
 	    ipecamera_debug_buffer(RAW_PACKETS, bufsize, NULL, 0, "frame%4lu/frame%9lu.invalid", ctx->event_id, packet_id);
 	    
 	    if (invalid_frame_id != ctx->event_id) {
-		pcilib_info("No frame magic in DMA packet of %u bytes, current event %lu", bufsize, ctx->event_id);
+		ipecamera_debug(HARDWARE, "No frame magic in DMA packet of %u bytes, current event %lu", bufsize, ctx->event_id);
 		invalid_frame_id = ctx->event_id;
 	    }
 
@@ -141,7 +141,7 @@ static int ipecamera_data_callback(void *user, pcilib_dma_flags_t flags, size_t
 	    ctx->frame[ctx->buffer_pos].event.info.offset = (((uint32_t*)buf)[7] & 0xFFFFFF) * 80;
 	    gettimeofday(&ctx->frame[ctx->buffer_pos].event.info.timestamp, NULL);
 	} else {
-	    pcilib_info("Frame magic is not found, ignoring broken data...");
+	    ipecamera_debug(HARDWARE, "Frame magic is not found, ignoring broken data...");
 	    return PCILIB_STREAMING_CONTINUE;
 	}
     }