Guest User

git-diff-rtl_sdr

a guest
Jul 29th, 2013
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.30 KB | None | 0 0
  1. diff --git a/CMakeLists.txt b/CMakeLists.txt
  2. index f3ef31e..bc2b532 100644
  3. --- a/CMakeLists.txt
  4. +++ b/CMakeLists.txt
  5. @@ -23,6 +23,8 @@
  6. ########################################################################
  7. cmake_minimum_required(VERSION 2.6)
  8. project(rtlsdr C)
  9. +set(CMAKE_BUILD_TYPE "Debug")
  10. +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -ggdb")
  11.  
  12. #select the release build type by default to get optimization flags
  13. if(NOT CMAKE_BUILD_TYPE)
  14. @@ -50,6 +52,11 @@ endif()
  15. ########################################################################
  16. find_package(PkgConfig)
  17. find_package(LibUSB)
  18. +if(APPLE)
  19. + INCLUDE_DIRECTORIES ( /Developer/Headers/FlatCarbon )
  20. + find_library(IOKIT_LIBRARY IOKit)
  21. + find_library(COREFOUND_LIBRARY CoreFoundation)
  22. +endif (APPLE)
  23. set(THREADS_USE_PTHREADS_WIN32 true)
  24. find_package(Threads)
  25.  
  26. diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
  27. index 6b23395..ff5266e 100644
  28. --- a/src/CMakeLists.txt
  29. +++ b/src/CMakeLists.txt
  30. @@ -72,7 +72,8 @@ add_executable(rtl_test rtl_test.c)
  31. add_executable(rtl_fm rtl_fm.c)
  32. add_executable(rtl_eeprom rtl_eeprom.c)
  33. add_executable(rtl_adsb rtl_adsb.c)
  34. -set(INSTALL_TARGETS rtlsdr_shared rtlsdr_static rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb)
  35. +add_executable(rtl_acars rtl_acars.c)
  36. +set(INSTALL_TARGETS rtlsdr_shared rtlsdr_static rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_acars)
  37.  
  38. target_link_libraries(rtl_sdr rtlsdr_shared
  39. ${LIBUSB_LIBRARIES}
  40. @@ -98,9 +99,14 @@ target_link_libraries(rtl_adsb rtlsdr_shared
  41. ${LIBUSB_LIBRARIES}
  42. ${CMAKE_THREAD_LIBS_INIT}
  43. )
  44. +target_link_libraries(rtl_acars rtlsdr_shared
  45. + ${LIBUSB_LIBRARIES}
  46. + ${CMAKE_THREAD_LIBS_INIT}
  47. +)
  48. if(UNIX)
  49. target_link_libraries(rtl_fm m)
  50. target_link_libraries(rtl_adsb m)
  51. +target_link_libraries(rtl_acars m)
  52. if(APPLE)
  53. target_link_libraries(rtl_test m)
  54. else()
  55. @@ -115,12 +121,14 @@ target_link_libraries(rtl_test libgetopt_static)
  56. target_link_libraries(rtl_fm libgetopt_static)
  57. target_link_libraries(rtl_eeprom libgetopt_static)
  58. target_link_libraries(rtl_adsb libgetopt_static)
  59. +target_link_libraries(rtl_acars libgetopt_static)
  60. set_property(TARGET rtl_sdr APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" )
  61. set_property(TARGET rtl_tcp APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" )
  62. set_property(TARGET rtl_test APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" )
  63. set_property(TARGET rtl_fm APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" )
  64. set_property(TARGET rtl_eeprom APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" )
  65. set_property(TARGET rtl_adsb APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" )
  66. +set_property(TARGET rtl_acars APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" )
  67. endif()
  68. ########################################################################
  69. # Install built library files & utilities
  70. diff --git a/src/rtl_adsb.c b/src/rtl_adsb.c
  71. index 44b62e2..706fd12 100644
  72. --- a/src/rtl_adsb.c
  73. +++ b/src/rtl_adsb.c
  74. @@ -58,7 +58,8 @@
  75. #define BADSAMPLE 255
  76.  
  77. static pthread_t demod_thread;
  78. -static pthread_mutex_t data_ready; /* locked when no data available */
  79. +static pthread_mutex_t data_ready; /* guard for buff_ready condition */
  80. +static pthread_cond_t buff_ready; /* signaled when data available */
  81. static volatile int do_exit = 0;
  82. static rtlsdr_dev_t *dev = NULL;
  83.  
  84. @@ -162,7 +163,7 @@ void squares_precompute(void)
  85. }
  86. }
  87.  
  88. -int magnitute(uint8_t *buf, int len)
  89. +int magnitude(uint8_t *buf, int len)
  90. /* takes i/q, changes buf in place (16 bit), returns new len (16 bit) */
  91. {
  92. int i;
  93. @@ -335,19 +336,30 @@ static void rtlsdr_callback(unsigned char *buf, uint32_t len, void *ctx)
  94. {
  95. if (do_exit) {
  96. return;}
  97. - memcpy(buffer, buf, len);
  98. - pthread_mutex_trylock(&data_ready);
  99. - pthread_mutex_unlock(&data_ready);
  100. + int err = pthread_mutex_lock(&data_ready);
  101. + if (err) {
  102. + fprintf(stderr, "lock error %d\n", err);
  103. + } else {
  104. + memcpy(buffer, buf, len);
  105. + pthread_cond_signal(&buff_ready);
  106. + pthread_mutex_unlock(&data_ready);
  107. + }
  108. }
  109.  
  110. static void *demod_thread_fn(void *arg)
  111. {
  112. - int len;
  113. + int len, err;
  114. while (!do_exit) {
  115. - pthread_mutex_lock(&data_ready);
  116. - len = magnitute(buffer, DEFAULT_BUF_LENGTH);
  117. - manchester((uint16_t*)buffer, len);
  118. - messages((uint16_t*)buffer, len);
  119. + err = pthread_mutex_lock(&data_ready);
  120. + if (err) {
  121. + fprintf(stderr, "lock error %d\n", err);
  122. + } else {
  123. + pthread_cond_wait(&buff_ready, &data_ready);
  124. + len = magnitude(buffer, DEFAULT_BUF_LENGTH);
  125. + manchester((uint16_t*)buffer, len);
  126. + messages((uint16_t*)buffer, len);
  127. + pthread_mutex_unlock(&data_ready);
  128. + }
  129. }
  130. rtlsdr_cancel_async(dev);
  131. return 0;
  132. @@ -366,6 +378,7 @@ int main(int argc, char **argv)
  133. int ppm_error = 0;
  134. char vendor[256], product[256], serial[256];
  135. pthread_mutex_init(&data_ready, NULL);
  136. + pthread_cond_init(&buff_ready, NULL);
  137. squares_precompute();
  138.  
  139. while ((opt = getopt(argc, argv, "d:g:p:e:Q:VS")) != -1)
  140. @@ -504,6 +517,7 @@ int main(int argc, char **argv)
  141. else {
  142. fprintf(stderr, "\nLibrary error %d, exiting...\n", r);}
  143. rtlsdr_cancel_async(dev);
  144. + pthread_cond_destroy(&buff_ready);
  145. pthread_mutex_destroy(&data_ready);
  146.  
  147. if (file != stdout) {
Advertisement
Add Comment
Please, Sign In to add comment