mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 13:10:19 -04:00 
			
		
		
		
	Merge branch 'feat-map65-integration' of bitbucket.org:k1jt/wsjtx into feat-map65-integration
This commit is contained in:
		
						commit
						f65b7925a7
					
				
							
								
								
									
										47
									
								
								CMake/Modules/Findportaudio.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								CMake/Modules/Findportaudio.cmake
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | |||||||
|  | # - Try to find portaudio | ||||||
|  | # | ||||||
|  | # Once done, this will define: | ||||||
|  | # | ||||||
|  | #  portaudio_FOUND - system has portaudio | ||||||
|  | #  portaudio_INCLUDE_DIRS - the portaudio include directories | ||||||
|  | #  portaudio_LIBRARIES - link these to use portaudio | ||||||
|  | #  portaudio_LIBRARY_DIRS - required shared/dynamic libraries are here | ||||||
|  | # | ||||||
|  | # If portaudio_STATIC is TRUE then static linking will be assumed | ||||||
|  | # | ||||||
|  | 
 | ||||||
|  | include (LibFindMacros) | ||||||
|  | 
 | ||||||
|  | set (portaudio_LIBRARY_DIRS) | ||||||
|  | 
 | ||||||
|  | # pkg-config? | ||||||
|  | find_path (__portaudio_pc_path NAMES portaudio-2.0.pc | ||||||
|  |   PATH_SUFFIXES lib/pkgconfig lib64/pkgconfig | ||||||
|  |   ) | ||||||
|  | if (__portaudio_pc_path) | ||||||
|  |   set (__pc_path $ENV{PKG_CONFIG_PATH}) | ||||||
|  |   list (APPEND __pc_path "${__portaudio_pc_path}") | ||||||
|  |   set (ENV{PKG_CONFIG_PATH} "${__pc_path}") | ||||||
|  |   unset (__pc_path CACHE) | ||||||
|  | endif () | ||||||
|  | unset (__portaudio_pc_path CACHE) | ||||||
|  | 
 | ||||||
|  | # Use pkg-config to get hints about paths, libs and, flags | ||||||
|  | unset (__pkg_config_checked_hamlib CACHE) | ||||||
|  | libfind_pkg_check_modules (PORTAUDIO portaudio-2.0) | ||||||
|  | 
 | ||||||
|  | if (portaudio_STATIC) | ||||||
|  |   set (portaudio_PROCESS_INCLUDES PORTAUDIO_STATIC_INCLUDE_DIRS) | ||||||
|  |   set (portaudio_PROCESS_LIBS PORTAUDIO_STATIC_LDFLAGS) | ||||||
|  |   set (portaudio_LIBRARY_DIRS ${PORTAUDIO_STATIC_LIBRARY_DIRS}) | ||||||
|  | else () | ||||||
|  |   set (portaudio_PROCESS_INCLUDES PORTAUDIO_INCLUDE_DIRS) | ||||||
|  |   set (portaudio_PROCESS_LIBS PORTAUDIO_LDFLAGS) | ||||||
|  |   set (portaudio_LIBRARY_DIRS ${PORTAUDIO_LIBRARY_DIRS}) | ||||||
|  | endif () | ||||||
|  | libfind_process (portaudio) | ||||||
|  | 
 | ||||||
|  | # Handle the  QUIETLY and REQUIRED  arguments and set  PORTAUDIO_FOUND to | ||||||
|  | # TRUE if all listed variables are TRUE | ||||||
|  | include (FindPackageHandleStandardArgs) | ||||||
|  | find_package_handle_standard_args (portaudio DEFAULT_MSG portaudio_INCLUDE_DIRS portaudio_LIBRARIES portaudio_LIBRARY_DIRS) | ||||||
							
								
								
									
										57
									
								
								CMake/Modules/Findusb.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								CMake/Modules/Findusb.cmake
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,57 @@ | |||||||
|  | # Findusb | ||||||
|  | # ======= | ||||||
|  | # | ||||||
|  | # Find the usb library | ||||||
|  | # | ||||||
|  | # This will define the following variables:: | ||||||
|  | # | ||||||
|  | #  usb_FOUND	- True if the system has the usb library | ||||||
|  | #  usb_VERSION	- The verion of the usb library which was found | ||||||
|  | # | ||||||
|  | # and the following imported targets:: | ||||||
|  | # | ||||||
|  | #  usb::usb	- The libusb library | ||||||
|  | 
 | ||||||
|  | find_package (PkgConfig) | ||||||
|  | pkg_check_modules (PC_usb QUIET usb) | ||||||
|  | 
 | ||||||
|  | find_path (usb_INCLUDE_DIR | ||||||
|  |   NAMES libusb.h | ||||||
|  |   PATHS ${PC_usb_INCLUDE_DIRS} | ||||||
|  |   PATH_SUFFIXES libusb-1.0 | ||||||
|  |   ) | ||||||
|  | find_library (usb_LIBRARY | ||||||
|  |   NAMES libusb-1.0 | ||||||
|  |   PATHS $PC_usb_LIBRARY_DIRS} | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | set (usb_VERSION ${PC_usb_VERSION}) | ||||||
|  | 
 | ||||||
|  | include (FindPackageHandleStandardArgs) | ||||||
|  | find_package_handle_standard_args (usb | ||||||
|  |   FOUND_VAR usb_FOUND | ||||||
|  |   REQUIRED_VARS | ||||||
|  |      usb_LIBRARY | ||||||
|  |      usb_INCLUDE_DIR | ||||||
|  |   VERSION_VAR usb_VERSION | ||||||
|  |   ) | ||||||
|  | 
 | ||||||
|  | if (usb_FOUND) | ||||||
|  |   set (usb_LIBRARIES ${usb_LIBRARY}) | ||||||
|  |   set (usb_INCLUDE_DIRS ${usb_INCLUDE_DIR}) | ||||||
|  |   set (usb_DEFINITIONS ${PC_usb_CFLAGS_OTHER}) | ||||||
|  | endif () | ||||||
|  | 
 | ||||||
|  | if (usb_FOUND AND NOT TARGET usb::usb) | ||||||
|  |   add_library (usb::usb UNKNOWN IMPORTED) | ||||||
|  |   set_target_properties (usb::usb PROPERTIES | ||||||
|  |     IMPORTED_LOCATION "${usb_LIBRARY}" | ||||||
|  |     INTERFACE_COMPILE_OPTIONS "${PC_usb_CFLAGS_OTHER}" | ||||||
|  |     INTERFACE_INCLUDE_DIRECTORIES "${usb_INCLUDE_DIR}" | ||||||
|  |     ) | ||||||
|  | endif () | ||||||
|  | 
 | ||||||
|  | mark_as_advanced ( | ||||||
|  |   usb_INCLUDE_DIR | ||||||
|  |   usb_LIBRARY | ||||||
|  |   ) | ||||||
| @ -886,19 +886,6 @@ if (WIN32) | |||||||
|   find_package (Qt5AxContainer REQUIRED) |   find_package (Qt5AxContainer REQUIRED) | ||||||
| endif (WIN32) | endif (WIN32) | ||||||
| 
 | 
 | ||||||
| # |  | ||||||
| # sub-directories |  | ||||||
| # |  | ||||||
| if (EXISTS ${CMAKE_SOURCE_DIR}/samples AND IS_DIRECTORY ${CMAKE_SOURCE_DIR}/samples) |  | ||||||
|   add_subdirectory (samples) |  | ||||||
| endif () |  | ||||||
| if (WSJT_GENERATE_DOCS) |  | ||||||
|   add_subdirectory (doc) |  | ||||||
| endif (WSJT_GENERATE_DOCS) |  | ||||||
| if (EXISTS ${CMAKE_SOURCE_DIR}/tests AND IS_DIRECTORY ${CMAKE_SOURCE_DIR}/tests) |  | ||||||
|   add_subdirectory (tests) |  | ||||||
| endif () |  | ||||||
| 
 |  | ||||||
| # | # | ||||||
| # Library building setup | # Library building setup | ||||||
| # | # | ||||||
| @ -962,7 +949,7 @@ if (Fortran_COMPILER_NAME MATCHES "gfortran.*") | |||||||
|   endif (CMAKE_OSX_SYSROOT) |   endif (CMAKE_OSX_SYSROOT) | ||||||
| 
 | 
 | ||||||
|   set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -fbounds-check -funroll-all-loops -fno-f2c ${General_FFLAGS}") |   set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -fbounds-check -funroll-all-loops -fno-f2c ${General_FFLAGS}") | ||||||
|   set (CMAKE_Fortran_FLAGS_DEBUG   "${CMAKE_Fortran_FLAGS_DEBUG} -fbounds-check -fno-f2c ${General_FFLAGS}") |   set (CMAKE_Fortran_FLAGS_DEBUG   "${CMAKE_Fortran_FLAGS_DEBUG} -fbounds-check -fno-f2c -ffpe-trap=denormal,invalid,zero,overflow ${General_FFLAGS}") | ||||||
| elseif (Fortran_COMPILER_NAME MATCHES "ifort.*") | elseif (Fortran_COMPILER_NAME MATCHES "ifort.*") | ||||||
|   # ifort (untested) |   # ifort (untested) | ||||||
|   set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -f77rtl ${General_FFLAGS}") |   set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -f77rtl ${General_FFLAGS}") | ||||||
| @ -1064,6 +1051,19 @@ elseif (CMAKE_HOST_WIN32) | |||||||
|   add_definitions (-DWIN32) |   add_definitions (-DWIN32) | ||||||
| endif () | endif () | ||||||
| 
 | 
 | ||||||
|  | # | ||||||
|  | # sub-directories | ||||||
|  | # | ||||||
|  | if (EXISTS ${CMAKE_SOURCE_DIR}/samples AND IS_DIRECTORY ${CMAKE_SOURCE_DIR}/samples) | ||||||
|  |   add_subdirectory (samples) | ||||||
|  | endif () | ||||||
|  | if (WSJT_GENERATE_DOCS) | ||||||
|  |   add_subdirectory (doc) | ||||||
|  | endif (WSJT_GENERATE_DOCS) | ||||||
|  | if (EXISTS ${CMAKE_SOURCE_DIR}/tests AND IS_DIRECTORY ${CMAKE_SOURCE_DIR}/tests) | ||||||
|  |   add_subdirectory (tests) | ||||||
|  | endif () | ||||||
|  | 
 | ||||||
| # build a library of package functionality (without and optionally with OpenMP support) | # build a library of package functionality (without and optionally with OpenMP support) | ||||||
| add_library (wsjt_cxx STATIC ${wsjt_CSRCS} ${wsjt_CXXSRCS}) | add_library (wsjt_cxx STATIC ${wsjt_CSRCS} ${wsjt_CXXSRCS}) | ||||||
| target_link_libraries (wsjt_cxx ${LIBM_LIBRARIES} Boost::log_setup ${LIBM_LIBRARIES}) | target_link_libraries (wsjt_cxx ${LIBM_LIBRARIES} Boost::log_setup ${LIBM_LIBRARIES}) | ||||||
| @ -1380,6 +1380,9 @@ else (${OPENMP_FOUND} OR APPLE) | |||||||
|   target_link_libraries (jt9 wsjt_fort wsjt_cxx fort_qt) |   target_link_libraries (jt9 wsjt_fort wsjt_cxx fort_qt) | ||||||
| endif (${OPENMP_FOUND} OR APPLE) | endif (${OPENMP_FOUND} OR APPLE) | ||||||
| 
 | 
 | ||||||
|  | # build map65 | ||||||
|  | add_subdirectory (map65) | ||||||
|  | 
 | ||||||
| # build the main application | # build the main application | ||||||
| generate_version_info (wsjtx_VERSION_RESOURCES | generate_version_info (wsjtx_VERSION_RESOURCES | ||||||
|   NAME wsjtx |   NAME wsjtx | ||||||
|  | |||||||
| @ -19,6 +19,7 @@ Here is an overview list, details are filled out below: | |||||||
|      * Hamlib rig control library |      * Hamlib rig control library | ||||||
|      * Pkg Config Lite |      * Pkg Config Lite | ||||||
|      * Boost C++ libraries |      * Boost C++ libraries | ||||||
|  |      * portaudio library (used by map65) | ||||||
| 
 | 
 | ||||||
| Qt Framework | Qt Framework | ||||||
| ------------ | ------------ | ||||||
| @ -80,7 +81,7 @@ installed and  updated you will  need to install some  packages, these | |||||||
| are needed to provide the necessary  *nix tools and utilities to build | are needed to provide the necessary  *nix tools and utilities to build | ||||||
| Hamlib from sources. | Hamlib from sources. | ||||||
| 
 | 
 | ||||||
|     pacman -S autoconf automake libtool make |     pacman -S autoconf automake libtool make tar | ||||||
| 
 | 
 | ||||||
| Hamlib | Hamlib | ||||||
| ------ | ------ | ||||||
| @ -169,3 +170,52 @@ from  https://sourceforge.net/projects/pkgconfiglite/files/0.28-1/ and | |||||||
| unzip it into a convenient location, as with other ancillary tools and | unzip it into a convenient location, as with other ancillary tools and | ||||||
| libraries I put these under C:\Tools\. | libraries I put these under C:\Tools\. | ||||||
| 
 | 
 | ||||||
|  | portaudio | ||||||
|  | --------- | ||||||
|  | 
 | ||||||
|  | This library  is only available as  sources so must be  built. It uses | ||||||
|  | autotools  and  building using  MinGW  tools  from  an Msys  shell  is | ||||||
|  | recommended. Ensure  your Msys  shell environment (PATH)  is correctly | ||||||
|  | set up for the MinGW tool chain you wish to build with, i.e. the MinGW | ||||||
|  | tools bundled with the Qt installation for 32-, or 64-bit as required. | ||||||
|  | 
 | ||||||
|  | Download   the   latest   stable    version   sources   tarball   from | ||||||
|  | http://files.portaudio.com/download.html , at the time of writing that | ||||||
|  | was  the pa_stable_v190700_20210406.tgz  file.  Unzip  and unpack  the | ||||||
|  | tarball in a suitable location like ~/src : | ||||||
|  | 
 | ||||||
|  |     cd ~/src | ||||||
|  |     tar xf ~/Downloads/pa_stable_v190700_20210406.tgz | ||||||
|  | 
 | ||||||
|  | out-of-source-tree builds are recommended, create a build directory in | ||||||
|  | a suitable location like ~/build and change working directory to it: | ||||||
|  | 
 | ||||||
|  |     mkdir -p ~/build/portaudio/mingw64 | ||||||
|  |     cd !$ | ||||||
|  | 
 | ||||||
|  | Configure and build and install the library in a suitable place (I use | ||||||
|  | ~/local as a root directory for installed packages. | ||||||
|  | 
 | ||||||
|  |     ~/src/portaudio/configure --prefix=$(HOME)/local/portaudio/mingw64 --with-winapi=wmme,directx,wdmks CFLAGS=-DNDEBUG | ||||||
|  |     make && make install | ||||||
|  | 
 | ||||||
|  | Repeat for the 32-bit architecture  if required, using a suitable Msys | ||||||
|  | environment for  the required  tool chain, different  build directory, | ||||||
|  | and install location. | ||||||
|  | 
 | ||||||
|  | Update your CMake  tool chain files to include  the install directory, | ||||||
|  | or directories, above.  I have something like this in  the 64-bit tool | ||||||
|  | chain files: | ||||||
|  | 
 | ||||||
|  |     # ... | ||||||
|  |     set (PORTAUDIODIR C:/Users/bill/local/portaudio/mingw64) | ||||||
|  |     # ... | ||||||
|  |     set (CMAKE_PREFIX_PATH ... ${PORTAUDIODIR} ...) | ||||||
|  |     #... | ||||||
|  | 
 | ||||||
|  | and similarly with  the 32-bit tool chain file  specifying the mingw32 | ||||||
|  | portaudio installation root directory. | ||||||
|  | 
 | ||||||
|  | Note that on Windows portaudio  will only build static libraries using | ||||||
|  | the standard  configuration, this  is fine and  therefore there  is no | ||||||
|  | need to add any new run-time paths to your execution environment. | ||||||
|  | |||||||
| @ -34,12 +34,8 @@ void *INIT_RS(unsigned int symsize,unsigned int gfpoly,unsigned fcr,unsigned pri | |||||||
|   struct rs *rs; |   struct rs *rs; | ||||||
|   int i, j, sr,root,iprim; |   int i, j, sr,root,iprim; | ||||||
| 
 | 
 | ||||||
| <<<<<<< HEAD:lib/init_rs.c |  | ||||||
|   /* Check parameter ranges */ |   /* Check parameter ranges */ | ||||||
|   if(symsize < 0 || symsize > (int)(8*sizeof(DTYPE))) |   if(symsize < 0 || symsize > (int)(8*sizeof(DTYPE))) | ||||||
| ======= |  | ||||||
|   if(symsize > 8*sizeof(DTYPE)) |  | ||||||
| >>>>>>> 280c8344cd80339491e9bad1dcc4ac9a1e5f684e:map65/libm65/init_rs.c |  | ||||||
|     return NULL; /* Need version with ints rather than chars */ |     return NULL; /* Need version with ints rather than chars */ | ||||||
| 
 | 
 | ||||||
|   if(fcr >= (1<<symsize)) |   if(fcr >= (1<<symsize)) | ||||||
|  | |||||||
| @ -1,27 +1,8 @@ | |||||||
| cmake_minimum_required (VERSION 2.8.9) | find_package (portaudio REQUIRED) | ||||||
| 
 | 
 | ||||||
| project (map65 C CXX Fortran) | find_package (usb REQUIRED) | ||||||
| 
 | 
 | ||||||
| set (MAP65_VERSION_MAJOR 1) | set (map65_CXXSRCS | ||||||
| set (MAP65_VERSION_MINOR 3) |  | ||||||
| 
 |  | ||||||
| if (POLICY CMP0020) |  | ||||||
|   cmake_policy (SET CMP0020 NEW) # link to Qt winmain on Windows |  | ||||||
| endif (POLICY CMP0020) |  | ||||||
| 
 |  | ||||||
| # make sure that the default is a RELEASE |  | ||||||
| if (NOT CMAKE_BUILD_TYPE) |  | ||||||
|   set (CMAKE_BUILD_TYPE RELEASE CACHE STRING |  | ||||||
|     "Choose the type of build, options are: None Debug Release." |  | ||||||
|     FORCE) |  | ||||||
| endif (NOT CMAKE_BUILD_TYPE) |  | ||||||
| 
 |  | ||||||
| # C++ setup |  | ||||||
| 
 |  | ||||||
| set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") |  | ||||||
| set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") |  | ||||||
| 
 |  | ||||||
| set (CXXSRCS |  | ||||||
|   about.cpp |   about.cpp | ||||||
|   astro.cpp |   astro.cpp | ||||||
|   bandmap.cpp |   bandmap.cpp | ||||||
| @ -43,17 +24,15 @@ set (CXXSRCS | |||||||
|   ) |   ) | ||||||
| 
 | 
 | ||||||
| if (WIN32) | if (WIN32) | ||||||
|   set (CXXSRCS ${CXXSRCS} killbyname.cpp) |   set (map65_CXXSRCS ${map65_CXXSRCS} killbyname.cpp) | ||||||
| endif (WIN32) | endif (WIN32) | ||||||
| 
 | 
 | ||||||
| set (CSRCS | set (map65_CSRCS | ||||||
|   paInputDevice.c |   paInputDevice.c | ||||||
|   pa_get_device_info.c |   pa_get_device_info.c | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| set_property (SOURCE ${CXXSRCS} ${CSRCS} APPEND PROPERTY COMPILE_FLAGS "-include map65_config.h") | set (map65_UISRCS | ||||||
| 
 |  | ||||||
| set (UISRCS |  | ||||||
|   about.ui |   about.ui | ||||||
|   astro.ui |   astro.ui | ||||||
|   bandmap.ui |   bandmap.ui | ||||||
| @ -64,102 +43,18 @@ set (UISRCS | |||||||
|   widegraph.ui |   widegraph.ui | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| # sort out pre-requisites |  | ||||||
| 
 |  | ||||||
| # libfftw3 setup |  | ||||||
| 
 |  | ||||||
| find_path (fftw3f_INCLUDES fftw3.f) |  | ||||||
| find_library (fftw3f_LIBRARIES NAMES fftw3f fftw3f-3) |  | ||||||
| include_directories (${fftw3f_INCLUDES}) |  | ||||||
| 
 |  | ||||||
| if (WIN32) |  | ||||||
|    find_library (usb_RUNTIME NAMES usb0 PATH_SUFFIXES bin) |  | ||||||
|    set (CMAKE_INSTALL_PREFIX C:/MAP65) |  | ||||||
| endif (WIN32) |  | ||||||
| 
 |  | ||||||
| # Qt5 setup |  | ||||||
| 
 |  | ||||||
| # Widgets finds its own dependencies. |  | ||||||
| find_package (Qt5Widgets REQUIRED) |  | ||||||
| find_package (Qt5Multimedia REQUIRED) |  | ||||||
| 
 |  | ||||||
| # Tell CMake to run moc when necessary |  | ||||||
| set (CMAKE_AUTOMOC ON) |  | ||||||
| 
 |  | ||||||
| # don't use Qt "keywords" signal, slot, emit in generated files to |  | ||||||
| # avoid compatability issue with other libraries |  | ||||||
| #ADD_DEFINITIONS (-DQT_NO_KEYWORDS) |  | ||||||
| 
 |  | ||||||
| # As moc files are generated in the binary dir, tell CMake to always |  | ||||||
| # look for includes there: |  | ||||||
| set (CMAKE_INCLUDE_CURRENT_DIR ON) |  | ||||||
| 
 |  | ||||||
| # project definitions |  | ||||||
| add_definitions (-DQT5) |  | ||||||
| if (CMAKE_HOST_UNIX) |  | ||||||
|   add_definitions (-DUNIX) |  | ||||||
| elseif (CMAKE_HOST_WIN32) |  | ||||||
|   add_definitions (-DWIN32) |  | ||||||
| endif () |  | ||||||
| 
 |  | ||||||
| #set_property (DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT) |  | ||||||
| set_property (DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE QT_NO_WARNING_OUTPUT) |  | ||||||
| 
 |  | ||||||
| # build the subdirectories | # build the subdirectories | ||||||
| add_subdirectory (libm65) | add_subdirectory (libm65) | ||||||
| 
 | 
 | ||||||
| # UI generation | # UI generation | ||||||
| qt5_wrap_ui (GENUISRCS ${UISRCS}) | qt5_wrap_ui (map65_GENUISRCS ${map65_UISRCS}) | ||||||
| 
 |  | ||||||
| add_executable (map65 ${CXXSRCS} ${CSRCS} ${GENUISRCS} map65.rc) |  | ||||||
| target_link_libraries (map65 m65impl ${fftw3f_LIBRARIES} ${CMAKE_CURRENT_SOURCE_DIR}/palir-02.dll ${CMAKE_CURRENT_SOURCE_DIR}/libusb0.dll ${CMAKE_CURRENT_SOURCE_DIR}/libwsock32.a) |  | ||||||
| 
 |  | ||||||
| if (WIN32) |  | ||||||
|   target_link_libraries (map65) |  | ||||||
| #  set_target_properties (map65 PROPERTIES LINK_FLAGS_RELEASE "${LINKER_FLAGS_RELEASE} ") |  | ||||||
|   set_target_properties (map65 PROPERTIES LINK_FLAGS_RELEASE "${LINKER_FLAGS_RELEASE} -mwindows") |  | ||||||
| endif (WIN32) |  | ||||||
| qt5_use_modules (map65 Widgets Multimedia OpenGL) |  | ||||||
| 
 | 
 | ||||||
|  | add_executable (map65 ${map65_CXXSRCS} ${map65_CSRCS} ${map65_GENUISRCS} map65.rc) | ||||||
|  | target_include_directories (map65 PRIVATE ${PORTAUDIO_INCLUDE_DIRS}) | ||||||
|  | target_link_libraries (map65 m65impl ${FFTW3_LIBRARIES} Qt5::Widgets Qt5::Network ${PORTAUDIO_STATIC_LDFLAGS} usb::usb) | ||||||
| 
 | 
 | ||||||
| install ( | install ( | ||||||
|   TARGETS map65 |   TARGETS map65 | ||||||
|   RUNTIME DESTINATION bin |   RUNTIME DESTINATION bin | ||||||
|   LIBRARY DESTINATION lib |   LIBRARY DESTINATION lib | ||||||
|   ) |   ) | ||||||
| 
 |  | ||||||
| # install (DIRECTORY Palettes DESTINATION bin PATTERN *.pal) |  | ||||||
| # install (DIRECTORY samples DESTINATION bin/save) |  | ||||||
| 
 |  | ||||||
| install (FILES |  | ||||||
| #  CALL3.TXT |  | ||||||
| #  prefixes.txt |  | ||||||
|   DESTINATION bin |  | ||||||
|   ) |  | ||||||
| 
 |  | ||||||
| if (WIN32) |  | ||||||
|   install ( |  | ||||||
|     FILES ${fftw3f_LIBRARIES} ${usb_RUNTIME}  |  | ||||||
|     DESTINATION bin COMPONENT Runtime |  | ||||||
|     ) |  | ||||||
| endif (WIN32) |  | ||||||
| 
 |  | ||||||
| # a custom target that is always built |  | ||||||
| ADD_CUSTOM_TARGET (revisiontag ALL) |  | ||||||
| 
 |  | ||||||
| # creates svnversion.h using cmake script |  | ||||||
| ADD_CUSTOM_COMMAND (TARGET revisiontag COMMAND ${CMAKE_COMMAND} |  | ||||||
|   -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}  |  | ||||||
|   -P ${CMAKE_CURRENT_SOURCE_DIR}/getsvn.cmake) |  | ||||||
| 
 |  | ||||||
| # explicitly say that the executable depends on custom target |  | ||||||
| add_dependencies(map65 revisiontag) |  | ||||||
| 
 |  | ||||||
| # versioning |  | ||||||
| 
 |  | ||||||
| configure_file ( |  | ||||||
|   "${PROJECT_SOURCE_DIR}/map65_config.h.in" |  | ||||||
|   "${PROJECT_BINARY_DIR}/map65_config.h" |  | ||||||
|   ) |  | ||||||
| 
 |  | ||||||
| include_directories ("${PROJECT_BINARY_DIR}") |  | ||||||
|  | |||||||
| @ -38,7 +38,7 @@ void BandMap::setText(QString t) | |||||||
|   s3="<span style=color:"+m_color3+";>"; |   s3="<span style=color:"+m_color3+";>"; | ||||||
| 
 | 
 | ||||||
|   ui->bmTextBrowser->clear(); |   ui->bmTextBrowser->clear(); | ||||||
|   QStringList lines = t.split( "\n", QString::SkipEmptyParts ); |   QStringList lines = t.split( "\n", Qt::SkipEmptyParts ); | ||||||
|   int nrows=(lines.length()+ncols-1)/ncols; |   int nrows=(lines.length()+ncols-1)/ncols; | ||||||
| 
 | 
 | ||||||
|   for(int i=0; i<nrows; i++) { |   for(int i=0; i<nrows; i++) { | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| #include "devsetup.h" | #include "devsetup.h" | ||||||
| #include "mainwindow.h" | #include "mainwindow.h" | ||||||
|  | #include <QTextStream> | ||||||
| #include <QDebug> | #include <QDebug> | ||||||
| #include <portaudio.h> | #include <portaudio.h> | ||||||
| 
 | 
 | ||||||
| @ -26,7 +27,7 @@ void DevSetup::initDlg() | |||||||
|   int minSpeed[MAXDEVICES]; |   int minSpeed[MAXDEVICES]; | ||||||
|   int maxSpeed[MAXDEVICES]; |   int maxSpeed[MAXDEVICES]; | ||||||
|   char hostAPI_DeviceName[MAXDEVICES][50]; |   char hostAPI_DeviceName[MAXDEVICES][50]; | ||||||
|   char s[60]; |   char s[256]; | ||||||
|   int numDevices=Pa_GetDeviceCount(); |   int numDevices=Pa_GetDeviceCount(); | ||||||
|   getDev(&numDevices,hostAPI_DeviceName,minChan,maxChan,minSpeed,maxSpeed); |   getDev(&numDevices,hostAPI_DeviceName,minChan,maxChan,minSpeed,maxSpeed); | ||||||
|   k=0; |   k=0; | ||||||
| @ -44,7 +45,7 @@ void DevSetup::initDlg() | |||||||
|   const PaDeviceInfo *pdi; |   const PaDeviceInfo *pdi; | ||||||
|   int nchout; |   int nchout; | ||||||
|   char *p,*p1; |   char *p,*p1; | ||||||
|   char p2[50]; |   char p2[256]; | ||||||
|   char pa_device_name[128]; |   char pa_device_name[128]; | ||||||
|   char pa_device_hostapi[128]; |   char pa_device_hostapi[128]; | ||||||
| 
 | 
 | ||||||
| @ -110,8 +111,10 @@ void DevSetup::initDlg() | |||||||
|   ui.mult570TxSpinBox->setValue(m_mult570Tx); |   ui.mult570TxSpinBox->setValue(m_mult570Tx); | ||||||
|   ui.cal570SpinBox->setValue(m_cal570); |   ui.cal570SpinBox->setValue(m_cal570); | ||||||
|   ui.sbTxOffset->setValue(m_TxOffset); |   ui.sbTxOffset->setValue(m_TxOffset); | ||||||
|   sscanf(m_colors.toLatin1(),"%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x", |   QTextStream its {&m_colors, QIODevice::ReadOnly}; | ||||||
|          &r,&g,&b,&r0,&g0,&b0,&r1,&g1,&b1,&r2,&g2,&b2,&r3,&g3,&b3); |   its.setIntegerBase (16); | ||||||
|  |   its.setFieldWidth (2); | ||||||
|  |   its >> r >> g >> b >> r0 >> g0 >> b0 >> r1 >> g1 >> b1 >> r2 >> g2 >> b2 >> r3 >> g3 >> b3; | ||||||
|   updateColorLabels(); |   updateColorLabels(); | ||||||
|   ui.sbBackgroundRed->setValue(r); |   ui.sbBackgroundRed->setValue(r); | ||||||
|   ui.sbBackgroundGreen->setValue(g); |   ui.sbBackgroundGreen->setValue(g); | ||||||
| @ -234,95 +237,122 @@ void DevSetup::updateColorLabels() | |||||||
|   int b2=ui.sbBlue2->value(); |   int b2=ui.sbBlue2->value(); | ||||||
|   int b3=ui.sbBlue3->value(); |   int b3=ui.sbBlue3->value(); | ||||||
| 
 | 
 | ||||||
|   t.sprintf("QLabel{background-color: #%2.2x%2.2x%2.2x;" |   ui.lab0->setStyleSheet ( | ||||||
|             "color: #%2.2x%2.2x%2.2x}",r,g,b,r0,g0,b0); |                           QString {"QLabel{background-color: #%1%2%3; color: #%4%5%6}"} | ||||||
|   ui.lab0->setStyleSheet(t); |                              .arg (r, 2, 16, QLatin1Char {'0'}) | ||||||
|   t.sprintf("QLabel{background-color: #%2.2x%2.2x%2.2x;" |                              .arg (g, 2, 16, QLatin1Char {'0'}) | ||||||
|             "color: #%2.2x%2.2x%2.2x}",r,g,b,r1,g1,b1); |                              .arg (b, 2, 16, QLatin1Char {'0'}) | ||||||
|   ui.lab1->setStyleSheet(t); |                              .arg (r0, 2, 16, QLatin1Char {'0'}) | ||||||
|   t.sprintf("QLabel{background-color: #%2.2x%2.2x%2.2x;" |                              .arg (g0, 2, 16, QLatin1Char {'0'}) | ||||||
|             "color: #%2.2x%2.2x%2.2x}",r,g,b,r2,g2,b2); |                              .arg (b0, 2, 16, QLatin1Char {'0'}) | ||||||
|   ui.lab2->setStyleSheet(t); |                           ); | ||||||
|   t.sprintf("QLabel{background-color: #%2.2x%2.2x%2.2x;" |   ui.lab1->setStyleSheet( | ||||||
|             "color: #%2.2x%2.2x%2.2x}",r,g,b,r3,g3,b3); |                          QString {"QLabel{background-color: #%1%2%3; color: #%4%5%6}"} | ||||||
|   ui.lab3->setStyleSheet(t); |                             .arg (r, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                             .arg (g, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                             .arg (b, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                             .arg (r1, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                             .arg (g1, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                             .arg (b1, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                          ); | ||||||
|  |   ui.lab2->setStyleSheet( | ||||||
|  |                          QString {"QLabel{background-color: #%1%2%3; color: #%4%5%6}"} | ||||||
|  |                             .arg (r, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                             .arg (g, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                             .arg (b, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                             .arg (r2, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                             .arg (g2, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                             .arg (b2, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                          ); | ||||||
|  |   ui.lab3->setStyleSheet( | ||||||
|  |                          QString {"QLabel{background-color: #%1%2%3; color: #%4%5%6}"} | ||||||
|  |                             .arg (r, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                             .arg (g, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                             .arg (b, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                             .arg (r3, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                             .arg (g3, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                             .arg (b3, 2, 16, QLatin1Char {'0'}) | ||||||
|  |                          ); | ||||||
| 
 | 
 | ||||||
|   m_colors.sprintf("%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x" |   QTextStream ots {&m_colors, QIODevice::WriteOnly}; | ||||||
|             "%2.2x%2.2x%2.2x",r,g,b,r0,g0,b0,r1,g1,b1,r2,g2,b2,r3,g3,b3); |   ots.setIntegerBase (16); | ||||||
|  |   ots.setFieldWidth (2); | ||||||
|  |   ots.setPadChar ('0'); | ||||||
|  |   ots << r << g << b << r0 << g0 << b0 << r1 << g1 << b1 << r2 << g2 << b2 << r3 << g3 << b3; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DevSetup::on_sbBackgroundRed_valueChanged(int r) | void DevSetup::on_sbBackgroundRed_valueChanged(int /*r*/) | ||||||
| { | { | ||||||
|   updateColorLabels(); |   updateColorLabels(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DevSetup::on_sbBackgroundGreen_valueChanged(int g) | void DevSetup::on_sbBackgroundGreen_valueChanged(int /*g*/) | ||||||
| { | { | ||||||
|   updateColorLabels(); |   updateColorLabels(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DevSetup::on_sbBackgroundBlue_valueChanged(int b) | void DevSetup::on_sbBackgroundBlue_valueChanged(int /*b*/) | ||||||
| { | { | ||||||
|   updateColorLabels(); |   updateColorLabels(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| void DevSetup::on_sbRed0_valueChanged(int arg1) | void DevSetup::on_sbRed0_valueChanged(int /*arg1*/) | ||||||
| { | { | ||||||
|   updateColorLabels(); |   updateColorLabels(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DevSetup::on_sbGreen0_valueChanged(int arg1) | void DevSetup::on_sbGreen0_valueChanged(int /*arg1*/) | ||||||
| { | { | ||||||
|   updateColorLabels(); |   updateColorLabels(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DevSetup::on_sbBlue0_valueChanged(int arg1) | void DevSetup::on_sbBlue0_valueChanged(int /*arg1*/) | ||||||
| { | { | ||||||
|   updateColorLabels(); |   updateColorLabels(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DevSetup::on_sbRed1_valueChanged(int arg1) | void DevSetup::on_sbRed1_valueChanged(int /*arg1*/) | ||||||
| { | { | ||||||
|    updateColorLabels(); |    updateColorLabels(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DevSetup::on_sbGreen1_valueChanged(int arg1) | void DevSetup::on_sbGreen1_valueChanged(int /*arg1*/) | ||||||
| { | { | ||||||
|   updateColorLabels(); |   updateColorLabels(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DevSetup::on_sbBlue1_valueChanged(int arg1) | void DevSetup::on_sbBlue1_valueChanged(int /*arg1*/) | ||||||
| { | { | ||||||
|    updateColorLabels(); |    updateColorLabels(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DevSetup::on_sbRed2_valueChanged(int arg1) | void DevSetup::on_sbRed2_valueChanged(int /*arg1*/) | ||||||
| { | { | ||||||
|    updateColorLabels(); |    updateColorLabels(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DevSetup::on_sbGreen2_valueChanged(int arg1) | void DevSetup::on_sbGreen2_valueChanged(int /*arg1*/) | ||||||
| { | { | ||||||
|    updateColorLabels(); |    updateColorLabels(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DevSetup::on_sbBlue2_valueChanged(int arg1) | void DevSetup::on_sbBlue2_valueChanged(int /*arg1*/) | ||||||
| { | { | ||||||
|    updateColorLabels(); |    updateColorLabels(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DevSetup::on_sbRed3_valueChanged(int arg1) | void DevSetup::on_sbRed3_valueChanged(int /*arg1*/) | ||||||
| { | { | ||||||
|   updateColorLabels(); |   updateColorLabels(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DevSetup::on_sbGreen3_valueChanged(int arg1) | void DevSetup::on_sbGreen3_valueChanged(int /*arg1*/) | ||||||
| { | { | ||||||
|   updateColorLabels(); |   updateColorLabels(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DevSetup::on_sbBlue3_valueChanged(int arg1) | void DevSetup::on_sbBlue3_valueChanged(int /*arg1*/) | ||||||
| { | { | ||||||
|   updateColorLabels(); |   updateColorLabels(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,64 +0,0 @@ | |||||||
|       INTEGER FFTW_R2HC |  | ||||||
|       PARAMETER (FFTW_R2HC=0) |  | ||||||
|       INTEGER FFTW_HC2R |  | ||||||
|       PARAMETER (FFTW_HC2R=1) |  | ||||||
|       INTEGER FFTW_DHT |  | ||||||
|       PARAMETER (FFTW_DHT=2) |  | ||||||
|       INTEGER FFTW_REDFT00 |  | ||||||
|       PARAMETER (FFTW_REDFT00=3) |  | ||||||
|       INTEGER FFTW_REDFT01 |  | ||||||
|       PARAMETER (FFTW_REDFT01=4) |  | ||||||
|       INTEGER FFTW_REDFT10 |  | ||||||
|       PARAMETER (FFTW_REDFT10=5) |  | ||||||
|       INTEGER FFTW_REDFT11 |  | ||||||
|       PARAMETER (FFTW_REDFT11=6) |  | ||||||
|       INTEGER FFTW_RODFT00 |  | ||||||
|       PARAMETER (FFTW_RODFT00=7) |  | ||||||
|       INTEGER FFTW_RODFT01 |  | ||||||
|       PARAMETER (FFTW_RODFT01=8) |  | ||||||
|       INTEGER FFTW_RODFT10 |  | ||||||
|       PARAMETER (FFTW_RODFT10=9) |  | ||||||
|       INTEGER FFTW_RODFT11 |  | ||||||
|       PARAMETER (FFTW_RODFT11=10) |  | ||||||
|       INTEGER FFTW_FORWARD |  | ||||||
|       PARAMETER (FFTW_FORWARD=-1) |  | ||||||
|       INTEGER FFTW_BACKWARD |  | ||||||
|       PARAMETER (FFTW_BACKWARD=+1) |  | ||||||
|       INTEGER FFTW_MEASURE |  | ||||||
|       PARAMETER (FFTW_MEASURE=0) |  | ||||||
|       INTEGER FFTW_DESTROY_INPUT |  | ||||||
|       PARAMETER (FFTW_DESTROY_INPUT=1) |  | ||||||
|       INTEGER FFTW_UNALIGNED |  | ||||||
|       PARAMETER (FFTW_UNALIGNED=2) |  | ||||||
|       INTEGER FFTW_CONSERVE_MEMORY |  | ||||||
|       PARAMETER (FFTW_CONSERVE_MEMORY=4) |  | ||||||
|       INTEGER FFTW_EXHAUSTIVE |  | ||||||
|       PARAMETER (FFTW_EXHAUSTIVE=8) |  | ||||||
|       INTEGER FFTW_PRESERVE_INPUT |  | ||||||
|       PARAMETER (FFTW_PRESERVE_INPUT=16) |  | ||||||
|       INTEGER FFTW_PATIENT |  | ||||||
|       PARAMETER (FFTW_PATIENT=32) |  | ||||||
|       INTEGER FFTW_ESTIMATE |  | ||||||
|       PARAMETER (FFTW_ESTIMATE=64) |  | ||||||
|       INTEGER FFTW_ESTIMATE_PATIENT |  | ||||||
|       PARAMETER (FFTW_ESTIMATE_PATIENT=128) |  | ||||||
|       INTEGER FFTW_BELIEVE_PCOST |  | ||||||
|       PARAMETER (FFTW_BELIEVE_PCOST=256) |  | ||||||
|       INTEGER FFTW_DFT_R2HC_ICKY |  | ||||||
|       PARAMETER (FFTW_DFT_R2HC_ICKY=512) |  | ||||||
|       INTEGER FFTW_NONTHREADED_ICKY |  | ||||||
|       PARAMETER (FFTW_NONTHREADED_ICKY=1024) |  | ||||||
|       INTEGER FFTW_NO_BUFFERING |  | ||||||
|       PARAMETER (FFTW_NO_BUFFERING=2048) |  | ||||||
|       INTEGER FFTW_NO_INDIRECT_OP |  | ||||||
|       PARAMETER (FFTW_NO_INDIRECT_OP=4096) |  | ||||||
|       INTEGER FFTW_ALLOW_LARGE_GENERIC |  | ||||||
|       PARAMETER (FFTW_ALLOW_LARGE_GENERIC=8192) |  | ||||||
|       INTEGER FFTW_NO_RANK_SPLITS |  | ||||||
|       PARAMETER (FFTW_NO_RANK_SPLITS=16384) |  | ||||||
|       INTEGER FFTW_NO_VRANK_SPLITS |  | ||||||
|       PARAMETER (FFTW_NO_VRANK_SPLITS=32768) |  | ||||||
|       INTEGER FFTW_NO_VRECURSE |  | ||||||
|       PARAMETER (FFTW_NO_VRECURSE=65536) |  | ||||||
|       INTEGER FFTW_NO_SIMD |  | ||||||
|       PARAMETER (FFTW_NO_SIMD=131072) |  | ||||||
| @ -185,7 +185,7 @@ void paInputDevice(int id, char* hostAPI_DeviceName, int* minChan, | |||||||
|   int pa_device_min_bytes; |   int pa_device_min_bytes; | ||||||
|   int pa_device_max_channels; |   int pa_device_max_channels; | ||||||
|   int pa_device_min_channels; |   int pa_device_min_channels; | ||||||
|   char p2[50]; |   char p2[256]; | ||||||
|   char *p,*p1; |   char *p,*p1; | ||||||
|   static int iret, valid_dev_cnt; |   static int iret, valid_dev_cnt; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -35,7 +35,7 @@ int killbyname(const char *szToTerminate) | |||||||
|   HANDLE hProc,hSnapShot,hSnapShotm; |   HANDLE hProc,hSnapShot,hSnapShotm; | ||||||
|   OSVERSIONINFO osvi; |   OSVERSIONINFO osvi; | ||||||
|   HINSTANCE hInstLib; |   HINSTANCE hInstLib; | ||||||
|   int iLen,iLenP,indx; |   int iLenP,indx; | ||||||
|   HMODULE hMod; |   HMODULE hMod; | ||||||
|   PROCESSENTRY32 procentry; |   PROCESSENTRY32 procentry; | ||||||
|   MODULEENTRY32 modentry; |   MODULEENTRY32 modentry; | ||||||
| @ -83,12 +83,12 @@ int killbyname(const char *szToTerminate) | |||||||
|     if(hInstLib == NULL) return 605; |     if(hInstLib == NULL) return 605; | ||||||
| 
 | 
 | ||||||
|     // Get procedure addresses.
 |     // Get procedure addresses.
 | ||||||
|     lpfEnumProcesses = (BOOL(WINAPI *)(DWORD *,DWORD,DWORD*)) |     lpfEnumProcesses = (BOOL(WINAPI *)(DWORD *,DWORD,DWORD*))(void (*)()) | ||||||
|         GetProcAddress( hInstLib, "EnumProcesses" ) ; |         GetProcAddress( hInstLib, "EnumProcesses" ) ; | ||||||
|     lpfEnumProcessModules = (BOOL(WINAPI *)(HANDLE, HMODULE *, |     lpfEnumProcessModules = (BOOL(WINAPI *)(HANDLE, HMODULE *, | ||||||
|         DWORD, LPDWORD)) GetProcAddress( hInstLib,                                                                     "EnumProcessModules" ) ; |                                             DWORD, LPDWORD))(void (*)()) GetProcAddress( hInstLib,                                                                     "EnumProcessModules" ) ; | ||||||
|         lpfGetModuleBaseName =(DWORD (WINAPI *)(HANDLE, HMODULE, LPTSTR, |         lpfGetModuleBaseName =(DWORD (WINAPI *)(HANDLE, HMODULE, LPTSTR, | ||||||
|         DWORD )) GetProcAddress( hInstLib, "GetModuleBaseNameA" ) ; |                                                 DWORD )) (void (*)())GetProcAddress( hInstLib, "GetModuleBaseNameA" ) ; | ||||||
| 
 | 
 | ||||||
|     if(lpfEnumProcesses == NULL || lpfEnumProcessModules == NULL || |     if(lpfEnumProcesses == NULL || lpfEnumProcessModules == NULL || | ||||||
|          lpfGetModuleBaseName == NULL) { |          lpfGetModuleBaseName == NULL) { | ||||||
| @ -116,7 +116,7 @@ int killbyname(const char *szToTerminate) | |||||||
|       // Now, get the process name
 |       // Now, get the process name
 | ||||||
|       if(hProc) { |       if(hProc) { | ||||||
|         if(lpfEnumProcessModules(hProc,&hMod,sizeof(hMod),&iCbneeded) ) { |         if(lpfEnumProcessModules(hProc,&hMod,sizeof(hMod),&iCbneeded) ) { | ||||||
|           iLen=lpfGetModuleBaseName(hProc,hMod,szName,MAX_PATH); |           lpfGetModuleBaseName(hProc,hMod,szName,MAX_PATH); | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|       CloseHandle(hProc); |       CloseHandle(hProc); | ||||||
| @ -162,20 +162,20 @@ int killbyname(const char *szToTerminate) | |||||||
|     // which does not have the Toolhelp32
 |     // which does not have the Toolhelp32
 | ||||||
|     // functions in the Kernel 32.
 |     // functions in the Kernel 32.
 | ||||||
|     lpfCreateToolhelp32Snapshot= |     lpfCreateToolhelp32Snapshot= | ||||||
|         (HANDLE(WINAPI *)(DWORD,DWORD)) |       (HANDLE(WINAPI *)(DWORD,DWORD))(void (*)()) | ||||||
|         GetProcAddress( hInstLib, |         GetProcAddress( hInstLib, | ||||||
|                         "CreateToolhelp32Snapshot" ) ; |                         "CreateToolhelp32Snapshot" ) ; | ||||||
|     lpfProcess32First= |     lpfProcess32First= | ||||||
|         (BOOL(WINAPI *)(HANDLE,LPPROCESSENTRY32)) |         (BOOL(WINAPI *)(HANDLE,LPPROCESSENTRY32))(void (*)()) | ||||||
|         GetProcAddress( hInstLib, "Process32First" ) ; |         GetProcAddress( hInstLib, "Process32First" ) ; | ||||||
|     lpfProcess32Next= |     lpfProcess32Next= | ||||||
|         (BOOL(WINAPI *)(HANDLE,LPPROCESSENTRY32)) |         (BOOL(WINAPI *)(HANDLE,LPPROCESSENTRY32))(void (*)()) | ||||||
|         GetProcAddress( hInstLib, "Process32Next" ) ; |         GetProcAddress( hInstLib, "Process32Next" ) ; | ||||||
|     lpfModule32First= |     lpfModule32First= | ||||||
|         (BOOL(WINAPI *)(HANDLE,LPMODULEENTRY32)) |         (BOOL(WINAPI *)(HANDLE,LPMODULEENTRY32))(void (*)()) | ||||||
|         GetProcAddress( hInstLib, "Module32First" ) ; |         GetProcAddress( hInstLib, "Module32First" ) ; | ||||||
|     lpfModule32Next= |     lpfModule32Next= | ||||||
|         (BOOL(WINAPI *)(HANDLE,LPMODULEENTRY32)) |         (BOOL(WINAPI *)(HANDLE,LPMODULEENTRY32))(void (*)()) | ||||||
|         GetProcAddress( hInstLib, "Module32Next" ) ; |         GetProcAddress( hInstLib, "Module32Next" ) ; | ||||||
|     if( lpfProcess32Next == NULL || |     if( lpfProcess32Next == NULL || | ||||||
|         lpfProcess32First == NULL || |         lpfProcess32First == NULL || | ||||||
|  | |||||||
										
											Binary file not shown.
										
									
								
							| @ -1,61 +1,4 @@ | |||||||
| cmake_minimum_required (VERSION 2.8.8) | set (libm65_FSRCS | ||||||
| 
 |  | ||||||
| project (libm65 C CXX Fortran) |  | ||||||
| 
 |  | ||||||
| if (POLICY CMP0020) |  | ||||||
|   cmake_policy (SET CMP0020 NEW) # link to Qt winmain on Windows |  | ||||||
| endif (POLICY CMP0020) |  | ||||||
| 
 |  | ||||||
| # make sure that the default is a RELEASE |  | ||||||
| if (NOT CMAKE_BUILD_TYPE) |  | ||||||
|   set (CMAKE_BUILD_TYPE RELEASE CACHE STRING |  | ||||||
|     "Choose the type of build, options are: None Debug Release." |  | ||||||
|     FORCE) |  | ||||||
| endif (NOT CMAKE_BUILD_TYPE) |  | ||||||
| 
 |  | ||||||
| set (CMAKE_POSITION_INDEPENDENT_CODE ON) |  | ||||||
| 
 |  | ||||||
| # Fortran setup |  | ||||||
| 
 |  | ||||||
| # FFLAGS depend on the compiler |  | ||||||
| get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME) |  | ||||||
| 
 |  | ||||||
| if (Fortran_COMPILER_NAME MATCHES "gfortran.*") |  | ||||||
|   # gfortran |  | ||||||
|   #  set (CMAKE_Fortran_FLAGS_RELEASE "-funroll-all-loops -fno-f2c -O3") |  | ||||||
|   set (CMAKE_Fortran_FLAGS_RELEASE "-O2 -fbounds-check") |  | ||||||
|   set (CMAKE_Fortran_FLAGS_DEBUG   "-fno-f2c -O0 -g") |  | ||||||
| elseif (Fortran_COMPILER_NAME MATCHES "ifort.*") |  | ||||||
|   # ifort (untested) |  | ||||||
|   set (CMAKE_Fortran_FLAGS_RELEASE "-f77rtl -O3") |  | ||||||
|   set (CMAKE_Fortran_FLAGS_DEBUG   "-f77rtl -O0 -g") |  | ||||||
| elseif (Fortran_COMPILER_NAME MATCHES "g77") |  | ||||||
|   # g77 |  | ||||||
|   set (CMAKE_Fortran_FLAGS_RELEASE "-funroll-all-loops -fno-f2c -O3 -m32") |  | ||||||
|   set (CMAKE_Fortran_FLAGS_DEBUG   "-fno-f2c -O0 -g -m32") |  | ||||||
| else (Fortran_COMPILER_NAME MATCHES "gfortran.*") |  | ||||||
|   message ("CMAKE_Fortran_COMPILER full path: " ${CMAKE_Fortran_COMPILER}) |  | ||||||
|   message ("Fortran compiler: " ${Fortran_COMPILER_NAME}) |  | ||||||
|   message ("No optimized Fortran compiler flags are known, we just try -O2...") |  | ||||||
|   set (CMAKE_Fortran_FLAGS_RELEASE "-O2") |  | ||||||
|   set (CMAKE_Fortran_FLAGS_DEBUG   "-O0 -g") |  | ||||||
| endif (Fortran_COMPILER_NAME MATCHES "gfortran.*") |  | ||||||
| 
 |  | ||||||
| # C++ setup |  | ||||||
| 
 |  | ||||||
| if (UNIX) |  | ||||||
| 	SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") |  | ||||||
| endif (UNIX) |  | ||||||
| 
 |  | ||||||
| # setup and test Fortran C/C++ interaction |  | ||||||
| 
 |  | ||||||
| include (FortranCInterface) |  | ||||||
| FortranCInterface_VERIFY (CXX QUIET) |  | ||||||
| FortranCInterface_HEADER (FC.h MACRO_NAMESPACE "FC_" SYMBOL_NAMESPACE "FC_" |  | ||||||
|   SYMBOLS ) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| set (FSRCS |  | ||||||
|   afc65b.f90 |   afc65b.f90 | ||||||
|   astro.f90 |   astro.f90 | ||||||
|   astro0.f90 |   astro0.f90 | ||||||
| @ -88,7 +31,9 @@ set (FSRCS | |||||||
|   four2a.f90 |   four2a.f90 | ||||||
|   ftninit.f90 |   ftninit.f90 | ||||||
|   ftnquit.f90 |   ftnquit.f90 | ||||||
|  |   q65b.f90 | ||||||
|   gen65.f90 |   gen65.f90 | ||||||
|  |   gen_q65_wave.f90 | ||||||
|   genqra64a.f90 |   genqra64a.f90 | ||||||
|   geocentric.f90 |   geocentric.f90 | ||||||
|   getdphi.f90 |   getdphi.f90 | ||||||
| @ -136,17 +81,23 @@ set (FSRCS | |||||||
|   trimlist.f90 |   trimlist.f90 | ||||||
|   twkfreq.f90 |   twkfreq.f90 | ||||||
|   twkfreq_xy.f90 |   twkfreq_xy.f90 | ||||||
|  |   wavhdr.f90 | ||||||
| 
 | 
 | ||||||
|   f77_wisdom.f |   f77_wisdom.f | ||||||
|   ) |   ) | ||||||
| 
 | 
 | ||||||
| set (CSRCS | set (libm65_ka9q_CSRCS | ||||||
|   decode_rs.c |   decode_rs.c | ||||||
|   encode_rs.c |   encode_rs.c | ||||||
|  |   init_rs.c | ||||||
|  | ) | ||||||
|  | set_source_files_properties (${libm65_ka9q_CSRCS} PROPERTIES COMPILE_FLAGS -Wno-sign-compare) | ||||||
|  | 
 | ||||||
|  | set (libm65_CSRCS | ||||||
|  |   ${libm65_ka9q_CSRCS} | ||||||
|   ftrsd2.c |   ftrsd2.c | ||||||
|   gran.c |   gran.c | ||||||
|   igray.c |   igray.c | ||||||
|   init_rs.c |  | ||||||
|   tmoonsub.c |   tmoonsub.c | ||||||
|   usleep.c |   usleep.c | ||||||
|   wrapkarn.c |   wrapkarn.c | ||||||
| @ -161,11 +112,12 @@ set (CSRCS | |||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| if (WIN32) | if (WIN32) | ||||||
|   set (CSRCS ${CSRCS} ptt.c) |   set (libm65_CSRCS ${libm65_CSRCS} ptt.c) | ||||||
| else (set (CSRCS ${CSRCS} ptt_unix.c)) | else () | ||||||
| endif (WIN32) |   set (libm65_CSRCS ${libm65_CSRCS} ptt_unix.c) | ||||||
|  | endif () | ||||||
| 
 | 
 | ||||||
| set (CXXSRCS | set (libm65_CXXSRCS | ||||||
|   ipcomm.cpp |   ipcomm.cpp | ||||||
|   ) |   ) | ||||||
| 
 | 
 | ||||||
| @ -175,13 +127,11 @@ set_source_files_properties (sec_midn.f90 PROPERTIES COMPILE_FLAGS -fno-second-u | |||||||
| # | # | ||||||
| # build our targets | # build our targets | ||||||
| # | # | ||||||
| add_library (m65impl STATIC ${FSRCS} ${CSRCS} ${CXXSRCS}) | add_library (m65impl STATIC ${libm65_FSRCS} ${libm65_CSRCS} ${libm65_CXXSRCS}) | ||||||
| qt5_use_modules (m65impl Core) | target_link_libraries (m65impl Qt5::Core) | ||||||
| 
 | 
 | ||||||
| add_executable (m65 m65.f90 m65a.f90) | add_executable (m65 m65.f90 m65a.f90) | ||||||
| target_link_libraries (m65 m65impl ${fftw3f_LIBRARIES}) | target_link_libraries (m65 m65impl ${FFTW3_LIBRARIES}) | ||||||
| add_dependencies (m65 fftw3f) |  | ||||||
| qt5_use_modules (m65 Core) |  | ||||||
| 
 | 
 | ||||||
| install ( | install ( | ||||||
|   TARGETS m65 |   TARGETS m65 | ||||||
|  | |||||||
							
								
								
									
										
											BIN
										
									
								
								map65/libusb.a
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								map65/libusb.a
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -7,10 +7,22 @@ | |||||||
| 
 | 
 | ||||||
| #include "mainwindow.h" | #include "mainwindow.h" | ||||||
| 
 | 
 | ||||||
|  | static QtMessageHandler default_message_handler; | ||||||
|  | 
 | ||||||
|  | void my_message_handler (QtMsgType type, QMessageLogContext const& context, QString const& msg) | ||||||
|  | { | ||||||
|  |   // Handle the messages!
 | ||||||
|  | 
 | ||||||
|  |   // Call the default handler.
 | ||||||
|  |   (*default_message_handler) (type, context, msg); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| int main(int argc, char *argv[]) | int main(int argc, char *argv[]) | ||||||
| { | { | ||||||
|     QApplication a(argc, argv); |   default_message_handler = qInstallMessageHandler (my_message_handler); | ||||||
|     MainWindow w; | 
 | ||||||
|     w.show(); |   QApplication a {argc, argv}; | ||||||
|     return a.exec(); |   MainWindow w; | ||||||
|  |   w.show (); | ||||||
|  |   return a.exec (); | ||||||
| } | } | ||||||
|  | |||||||
| @ -10,7 +10,7 @@ | |||||||
| #include "bandmap.h" | #include "bandmap.h" | ||||||
| #include "txtune.h" | #include "txtune.h" | ||||||
| #include "sleep.h" | #include "sleep.h" | ||||||
| #include "portaudio.h" | #include <portaudio.h> | ||||||
| 
 | 
 | ||||||
| #define NFFT 32768 | #define NFFT 32768 | ||||||
| 
 | 
 | ||||||
| @ -202,7 +202,7 @@ MainWindow::MainWindow(QWidget *parent) : | |||||||
|   lockFile.open(QIODevice::ReadWrite); |   lockFile.open(QIODevice::ReadWrite); | ||||||
|   QFile quitFile(m_appDir + "/.lock"); |   QFile quitFile(m_appDir + "/.lock"); | ||||||
|   quitFile.remove(); |   quitFile.remove(); | ||||||
|   proc_m65.start(QDir::toNativeSeparators(m_appDir + "/m65 -s")); |   proc_m65.start(QDir::toNativeSeparators(m_appDir + "/m65"), {"-s", }); | ||||||
| 
 | 
 | ||||||
|   m_pbdecoding_style1="QPushButton{background-color: cyan; \
 |   m_pbdecoding_style1="QPushButton{background-color: cyan; \
 | ||||||
|       border-style: outset; border-width: 1px; border-radius: 5px; \ |       border-style: outset; border-width: 1px; border-radius: 5px; \ | ||||||
| @ -564,9 +564,20 @@ void MainWindow::dataSink(int k) | |||||||
|            &px, &py, s, &nkhz, &ihsym, &nzap, &slimit, lstrong); |            &px, &py, s, &nkhz, &ihsym, &nzap, &slimit, lstrong); | ||||||
|   QString t; |   QString t; | ||||||
|   m_pctZap=nzap/178.3; |   m_pctZap=nzap/178.3; | ||||||
|   if(m_xpol) t.sprintf(" Rx noise: %5.1f  %5.1f %5.1f %% ",px,py,m_pctZap); |   if(m_xpol) { | ||||||
|   if(!m_xpol) t.sprintf(" Rx noise: %5.1f  %5.1f %% ",px,m_pctZap); |     lab4->setText ( | ||||||
|   lab4->setText(t); |                   QString {" Rx noise: %1  %2 %3 %% "} | ||||||
|  |                      .arg (px, 5, 'f', 1) | ||||||
|  |                      .arg (py, 5, 'f', 1) | ||||||
|  |                      .arg (m_pctZap, 5, 'f', 1) | ||||||
|  |                   ); | ||||||
|  |   } else { | ||||||
|  |     lab4->setText ( | ||||||
|  |                   QString {" Rx noise: %1  %2 %% "} | ||||||
|  |                   .arg (px, 5, 'f', 1) | ||||||
|  |                   .arg (m_pctZap, 5, 'f', 1) | ||||||
|  |                   ); | ||||||
|  |   } | ||||||
|   xSignalMeter->setValue(px);                   // Update the signal meters
 |   xSignalMeter->setValue(px);                   // Update the signal meters
 | ||||||
|   ySignalMeter->setValue(py); |   ySignalMeter->setValue(py); | ||||||
|   if(m_monitoring || m_diskData) { |   if(m_monitoring || m_diskData) { | ||||||
| @ -575,10 +586,18 @@ void MainWindow::dataSink(int k) | |||||||
| 
 | 
 | ||||||
|   if(nadj == 10) { |   if(nadj == 10) { | ||||||
|     if(m_xpol) { |     if(m_xpol) { | ||||||
|       t.sprintf("Amp: %6.4f %6.4f   Phase: %6.4f %6.4f", |       ui->decodedTextBrowser->append ( | ||||||
|                 m_gainx,m_gainy,m_phasex,m_phasey); |                                       QString {"Amp: %1 %2   Phase: %3 %4"} | ||||||
|  |                                          .arg (m_gainx, 6, 'f', 4).arg (m_gainy, 6, 'f', 4) | ||||||
|  |                                          .arg (m_phasex, 6, 'f', 4) | ||||||
|  |                                          .arg (m_phasey, 6, 'f', 4) | ||||||
|  |                                       ); | ||||||
|     } else { |     } else { | ||||||
|       t.sprintf("Amp: %6.4f   Phase: %6.4f",m_gainx,m_phasex); |       ui->decodedTextBrowser->append( | ||||||
|  |                                      QString {"Amp: %1   Phase: %1"} | ||||||
|  |                                         .arg (m_gainx, 6, 'f', 4) | ||||||
|  |                                         .arg (m_phasex, 6, 'f', 4) | ||||||
|  |                                      ); | ||||||
|     } |     } | ||||||
|     ui->decodedTextBrowser->append(t); |     ui->decodedTextBrowser->append(t); | ||||||
|     m_adjustIQ=0; |     m_adjustIQ=0; | ||||||
| @ -798,6 +817,7 @@ void MainWindow::keyPressEvent( QKeyEvent *e )                //keyPressEvent | |||||||
|       m_ntx=6; |       m_ntx=6; | ||||||
|       ui->txrb6->setChecked(true); |       ui->txrb6->setChecked(true); | ||||||
|     } |     } | ||||||
|  |     break; | ||||||
|   case Qt::Key_F6: |   case Qt::Key_F6: | ||||||
|     if(e->modifiers() & Qt::ShiftModifier) { |     if(e->modifiers() & Qt::ShiftModifier) { | ||||||
|       on_actionDecode_remaining_files_in_directory_triggered(); |       on_actionDecode_remaining_files_in_directory_triggered(); | ||||||
| @ -824,8 +844,8 @@ void MainWindow::keyPressEvent( QKeyEvent *e )                //keyPressEvent | |||||||
|   case Qt::Key_G: |   case Qt::Key_G: | ||||||
|     if(e->modifiers() & Qt::AltModifier) { |     if(e->modifiers() & Qt::AltModifier) { | ||||||
|       genStdMsgs(""); |       genStdMsgs(""); | ||||||
|       break; |  | ||||||
|     } |     } | ||||||
|  |     break; | ||||||
|   case Qt::Key_L: |   case Qt::Key_L: | ||||||
|     if(e->modifiers() & Qt::ControlModifier) { |     if(e->modifiers() & Qt::ControlModifier) { | ||||||
|       lookup(); |       lookup(); | ||||||
| @ -1288,11 +1308,11 @@ void MainWindow::decode()                                       //decode() | |||||||
|   QString hcall=(ui->dxCallEntry->text()+"            ").mid(0,12); |   QString hcall=(ui->dxCallEntry->text()+"            ").mid(0,12); | ||||||
|   QString hgrid=(ui->dxGridEntry->text()+"      ").mid(0,6); |   QString hgrid=(ui->dxGridEntry->text()+"      ").mid(0,6); | ||||||
| 
 | 
 | ||||||
|   strncpy(datcom_.mycall, mcall.toLatin1(), 12); |   memcpy(datcom_.mycall, mcall.toLatin1(), 12); | ||||||
|   strncpy(datcom_.mygrid, mgrid.toLatin1(), 6); |   memcpy(datcom_.mygrid, mgrid.toLatin1(), 6); | ||||||
|   strncpy(datcom_.hiscall, hcall.toLatin1(), 12); |   memcpy(datcom_.hiscall, hcall.toLatin1(), 12); | ||||||
|   strncpy(datcom_.hisgrid, hgrid.toLatin1(), 6); |   memcpy(datcom_.hisgrid, hgrid.toLatin1(), 6); | ||||||
|   strncpy(datcom_.datetime, m_dateTime.toLatin1(), 20); |   memcpy(datcom_.datetime, m_dateTime.toLatin1(), 20); | ||||||
| 
 | 
 | ||||||
|   //newdat=1  ==> this is new data, must do the big FFT
 |   //newdat=1  ==> this is new data, must do the big FFT
 | ||||||
|   //nagain=1  ==> decode only at fQSO +/- Tol
 |   //nagain=1  ==> decode only at fQSO +/- Tol
 | ||||||
| @ -1345,9 +1365,7 @@ void MainWindow::readFromStdout()                             //readFromStdout | |||||||
|     if(t.indexOf("<QuickDecodeDone>") >= 0) { |     if(t.indexOf("<QuickDecodeDone>") >= 0) { | ||||||
|       m_nsum=t.mid(17,4).toInt(); |       m_nsum=t.mid(17,4).toInt(); | ||||||
|       m_nsave=t.mid(21,4).toInt(); |       m_nsave=t.mid(21,4).toInt(); | ||||||
|       QString t2; |       lab7->setText (QString {"Avg: %1"}.arg (m_nsum)); | ||||||
|       t2.sprintf("Avg: %d",m_nsum); |  | ||||||
|       lab7->setText(t2); |  | ||||||
|       if(m_modeQ65>0) g_pWideGraph->setDecodeFinished(); |       if(m_modeQ65>0) g_pWideGraph->setDecodeFinished(); | ||||||
|     } |     } | ||||||
|     if(t.indexOf("<DecodeFinished>") >= 0) { |     if(t.indexOf("<DecodeFinished>") >= 0) { | ||||||
| @ -1502,7 +1520,7 @@ void MainWindow::guiUpdate() | |||||||
|       f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append); |       f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append); | ||||||
|       QTextStream out(&f); |       QTextStream out(&f); | ||||||
|       out << QDateTime::currentDateTimeUtc().toString("yyyy-MMM-dd hh:mm") |       out << QDateTime::currentDateTimeUtc().toString("yyyy-MMM-dd hh:mm") | ||||||
|           << "  Tx message:  " << QString::fromLatin1(msgsent) << endl; |           << "  Tx message:  " << QString::fromLatin1(msgsent) << Qt::endl; | ||||||
|       f.close(); |       f.close(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -1525,7 +1543,7 @@ void MainWindow::guiUpdate() | |||||||
|     f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append); |     f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append); | ||||||
|     QTextStream out(&f); |     QTextStream out(&f); | ||||||
|     out << QDateTime::currentDateTimeUtc().toString("yyyy-MMM-dd hh:mm") |     out << QDateTime::currentDateTimeUtc().toString("yyyy-MMM-dd hh:mm") | ||||||
|         << "  Tx message:  " << QString::fromLatin1(msgsent) << endl; |         << "  Tx message:  " << QString::fromLatin1(msgsent) << Qt::endl; | ||||||
|     f.close(); |     f.close(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -1643,14 +1661,14 @@ void MainWindow::ba2msg(QByteArray ba, char message[])             //ba2msg() | |||||||
|   bool eom; |   bool eom; | ||||||
|   eom=false; |   eom=false; | ||||||
|   for(int i=0;i<22; i++) { |   for(int i=0;i<22; i++) { | ||||||
|     if((int)ba[i] == 0) eom=true; |     if (i >= ba.size () || !ba[i]) eom=true; | ||||||
|     if(eom) { |     if(eom) { | ||||||
|       message[i]=32; |       message[i] = ' '; | ||||||
|     } else { |     } else { | ||||||
|       message[i]=ba[i]; |       message[i]=ba[i]; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   message[22]=0; |   message[22] = '\0'; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void MainWindow::on_txFirstCheckBox_stateChanged(int nstate)        //TxFirst
 | void MainWindow::on_txFirstCheckBox_stateChanged(int nstate)        //TxFirst
 | ||||||
| @ -1867,7 +1885,7 @@ void MainWindow::on_addButton_clicked()                       //Add button | |||||||
| 
 | 
 | ||||||
|   if(f1.size()==0) { |   if(f1.size()==0) { | ||||||
|     QTextStream out(&f1); |     QTextStream out(&f1); | ||||||
|     out << "ZZZZZZ" << endl; |     out << "ZZZZZZ" << Qt::endl; | ||||||
|     f1.close(); |     f1.close(); | ||||||
|     f1.open(QIODevice::ReadOnly | QIODevice::Text); |     f1.open(QIODevice::ReadOnly | QIODevice::Text); | ||||||
|   } |   } | ||||||
| @ -2192,13 +2210,12 @@ void MainWindow::on_actionApply_IQ_Calibration_triggered() | |||||||
| 
 | 
 | ||||||
| void MainWindow::on_actionFUNcube_Dongle_triggered() | void MainWindow::on_actionFUNcube_Dongle_triggered() | ||||||
| { | { | ||||||
|   proc_qthid.start(QDir::toNativeSeparators(m_appDir + "/qthid")); |   proc_qthid.start (QDir::toNativeSeparators(m_appDir + "/qthid"), QStringList {}); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void MainWindow::on_actionEdit_wsjt_log_triggered() | void MainWindow::on_actionEdit_wsjt_log_triggered() | ||||||
| { | { | ||||||
|   QString cmnd=m_editorCommand + " " + m_appDir + "/wsjt.log"; |   proc_editor.start (QDir::toNativeSeparators (m_editorCommand), {QDir::toNativeSeparators (m_appDir + "/wsjt.log"), }); | ||||||
|   proc_editor.start(QDir::toNativeSeparators(cmnd)); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void MainWindow::on_actionTx_Tune_triggered() | void MainWindow::on_actionTx_Tune_triggered() | ||||||
|  | |||||||
| @ -31,7 +31,7 @@ void Messages::setText(QString t, QString t2) | |||||||
|   ui->messagesTextBrowser->setStyleSheet(s); |   ui->messagesTextBrowser->setStyleSheet(s); | ||||||
| 
 | 
 | ||||||
|   ui->messagesTextBrowser->clear(); |   ui->messagesTextBrowser->clear(); | ||||||
|   QStringList lines = t.split( "\n", QString::SkipEmptyParts ); |   QStringList lines = t.split( "\n", Qt::SkipEmptyParts ); | ||||||
|   foreach( QString line, lines ) { |   foreach( QString line, lines ) { | ||||||
|     QString t1=line.mid(0,50); |     QString t1=line.mid(0,50); | ||||||
|     int ncq=t1.indexOf(" CQ "); |     int ncq=t1.indexOf(" CQ "); | ||||||
| @ -57,7 +57,7 @@ void Messages::setText(QString t, QString t2) | |||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Messages::selectCallsign2(bool ctrl) | void Messages::selectCallsign2(bool /*ctrl*/) | ||||||
| { | { | ||||||
|   QString t = ui->messagesTextBrowser->toPlainText();   //Full contents
 |   QString t = ui->messagesTextBrowser->toPlainText();   //Full contents
 | ||||||
|   int i=ui->messagesTextBrowser->textCursor().position(); |   int i=ui->messagesTextBrowser->textCursor().position(); | ||||||
|  | |||||||
| @ -32,9 +32,7 @@ void MeterWidget::setValue(int value) | |||||||
| void MeterWidget::paintEvent( QPaintEvent * ) | void MeterWidget::paintEvent( QPaintEvent * ) | ||||||
| { | { | ||||||
|     int pos; |     int pos; | ||||||
|     QPainter p; |     QPainter p {this}; | ||||||
| 
 |  | ||||||
|     p.begin(this); |  | ||||||
| 
 | 
 | ||||||
|     // Sanitize
 |     // Sanitize
 | ||||||
|     m_signal = m_signal < 0 ? 0 : m_signal; |     m_signal = m_signal < 0 ? 0 : m_signal; | ||||||
|  | |||||||
| @ -14,7 +14,7 @@ void paInputDevice(int id, char* hostAPI_DeviceName, int* minChan, | |||||||
|   int pa_device_min_bytes; |   int pa_device_min_bytes; | ||||||
|   int pa_device_max_channels; |   int pa_device_max_channels; | ||||||
|   int pa_device_min_channels; |   int pa_device_min_channels; | ||||||
|   char p2[50]; |   char p2[256]; | ||||||
|   char *p,*p1; |   char *p,*p1; | ||||||
|   static int iret, valid_dev_cnt; |   static int iret, valid_dev_cnt; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| #include <portaudio.h> | #include <portaudio.h> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
|  | #include <string.h> | ||||||
| 
 | 
 | ||||||
| #define MAX_LATENCY 20 | #define MAX_LATENCY 20 | ||||||
| 
 | 
 | ||||||
|  | |||||||
										
											Binary file not shown.
										
									
								
							| @ -285,7 +285,6 @@ void CPlotter::DrawOverlay()                                 //DrawOverlay() | |||||||
| 
 | 
 | ||||||
|   QRect rect0; |   QRect rect0; | ||||||
|   QPainter painter0(&m_ScalePixmap); |   QPainter painter0(&m_ScalePixmap); | ||||||
|   painter0.initFrom(this); |  | ||||||
| 
 | 
 | ||||||
|   //create Font to use for scales
 |   //create Font to use for scales
 | ||||||
|   QFont Font("Arial"); |   QFont Font("Arial"); | ||||||
| @ -365,7 +364,6 @@ void CPlotter::DrawOverlay()                                 //DrawOverlay() | |||||||
|   // Now make the zoomed scale, using m_ZoomScalePixmap and painter3
 |   // Now make the zoomed scale, using m_ZoomScalePixmap and painter3
 | ||||||
|   QRect rect1; |   QRect rect1; | ||||||
|   QPainter painter3(&m_ZoomScalePixmap); |   QPainter painter3(&m_ZoomScalePixmap); | ||||||
|   painter3.initFrom(this); |  | ||||||
|   painter3.setFont(Font); |   painter3.setFont(Font); | ||||||
|   painter3.setPen(Qt::black); |   painter3.setPen(Qt::black); | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										1123
									
								
								map65/portaudio.h
									
									
									
									
									
								
							
							
						
						
									
										1123
									
								
								map65/portaudio.h
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										229
									
								
								map65/set570.cpp
									
									
									
									
									
								
							
							
						
						
									
										229
									
								
								map65/set570.cpp
									
									
									
									
									
								
							| @ -22,8 +22,7 @@ | |||||||
| #include <windows.h> | #include <windows.h> | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #include <usb.h> | #include <libusb.h> | ||||||
| //#include "/users/joe/linrad/3.37/usb.h"
 |  | ||||||
| #include <QDebug> | #include <QDebug> | ||||||
| 
 | 
 | ||||||
| #define USB_SUCCESS	            0 | #define USB_SUCCESS	            0 | ||||||
| @ -48,21 +47,15 @@ int  increment_freq; | |||||||
| int  retval = -1; | int  retval = -1; | ||||||
| int  display_freq = -1; | int  display_freq = -1; | ||||||
| int  delay; | int  delay; | ||||||
| usb_dev_handle  *global_si570usb_handle = NULL; | static libusb_device_handle * global_si570usb_handle; | ||||||
| 
 | 
 | ||||||
| // ********sleep functions***************
 |  | ||||||
| //use this function  under LINUX
 |  | ||||||
| /*
 |  | ||||||
| void si570_sleep(int us) | void si570_sleep(int us) | ||||||
| { | { | ||||||
| usleep(us); | #if defined (Q_OS_WIN) | ||||||
| } |   ::Sleep (us / 1000); | ||||||
| */ | #else | ||||||
| 
 |   ::usleep (us); | ||||||
| //use this function under WINDOWS
 | #endif | ||||||
| void si570_sleep(int us) |  | ||||||
| { |  | ||||||
|   Sleep(us/1000); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| double round(double x) | double round(double x) | ||||||
| @ -78,11 +71,9 @@ double current_time(void) //for delay measurements | |||||||
|   return 0.000001*t.tv_usec+t.tv_sec; |   return 0.000001*t.tv_usec+t.tv_sec; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int  usbGetStringAscii(usb_dev_handle *dev, int my_index, | unsigned char Si570usbOpenDevice(libusb_device_handle **device, char *usbSerialID); | ||||||
|                int langid, char *buf, int buflen); |  | ||||||
| unsigned char Si570usbOpenDevice(usb_dev_handle **device, char *usbSerialID); |  | ||||||
| void setLongWord( int value, char * bytes); | void setLongWord( int value, char * bytes); | ||||||
| int setFreqByValue(usb_dev_handle * handle, double frequency); | int setFreqByValue(libusb_device_handle * handle, double frequency); | ||||||
| void sweepa_freq(void); | void sweepa_freq(void); | ||||||
| void sweepm_freq(void); | void sweepm_freq(void); | ||||||
| 
 | 
 | ||||||
| @ -105,111 +96,105 @@ int set570(double freq_MHz) | |||||||
|   return 0; |   return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int  usbGetStringAscii(usb_dev_handle *dev, int my_index, | unsigned char Si570usbOpenDevice (libusb_device_handle * * udh, char * usbSerialID) | ||||||
|                        int langid, char *buf, int buflen) |  | ||||||
| { | { | ||||||
|   char    buffer[256]; |   // if (*udh) return USB_SUCCESS; // only scan USB devices 1st time
 | ||||||
|   int     rval, i; |  | ||||||
|   if((rval = usb_control_msg(dev, USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR, |  | ||||||
|      (USB_DT_STRING << 8) + my_index, langid, buffer, |  | ||||||
|      sizeof(buffer), 1000)) < 0) return rval; |  | ||||||
|   if(buffer[1] != USB_DT_STRING)  return 0; |  | ||||||
|   if((unsigned char)buffer[0] < rval) rval = (unsigned char)buffer[0]; |  | ||||||
|   rval /= 2; |  | ||||||
| // lossy conversion to ISO Latin1
 |  | ||||||
|   for(i=1;i<rval;i++) { |  | ||||||
|     if(i > buflen) break;                       // destination buffer overflow
 |  | ||||||
|     buf[i-1] = buffer[2 * i]; |  | ||||||
|     if(buffer[2 * i + 1] != 0)  buf[i-1] = '?'; // outside of ISO Latin1 range
 |  | ||||||
|   } |  | ||||||
|   buf[i-1] = 0; |  | ||||||
|   return i-1; |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| unsigned char Si570usbOpenDevice(usb_dev_handle **device, char *usbSerialID) |  | ||||||
| { |  | ||||||
|   struct usb_bus      *bus; |  | ||||||
|   struct usb_device   *dev; |  | ||||||
|   usb_dev_handle      *handle = NULL; |  | ||||||
|   unsigned char       errorCode = USB_ERROR_NOTFOUND; |  | ||||||
|   char                string[256]; |  | ||||||
|   int                 len; |  | ||||||
|   int  vendor        = USBDEV_SHARED_VENDOR; |   int  vendor        = USBDEV_SHARED_VENDOR; | ||||||
|   char *vendorName   = (char *)VENDOR_NAME; |   char *vendorName   = (char *)VENDOR_NAME; | ||||||
|   int  product       = USBDEV_SHARED_PRODUCT; |   int  product       = USBDEV_SHARED_PRODUCT; | ||||||
|   char *productName  = (char *)PRODUCT_NAME; |   char *productName  = (char *)PRODUCT_NAME; | ||||||
|   char serialNumberString[20]; |  | ||||||
|   static int  didUsbInit = 0; |  | ||||||
| 
 | 
 | ||||||
|   if(!didUsbInit) { |   libusb_device_handle * handle = nullptr; | ||||||
|     didUsbInit = 1; |   unsigned char errorCode = USB_ERROR_NOTFOUND; | ||||||
|     usb_init(); |   char buffer[256]; | ||||||
|   } |   int rc; | ||||||
|   usb_find_busses(); |   if ((rc = libusb_init (nullptr)) < 0) // init default context (safe to repeat)
 | ||||||
|   usb_find_devices(); |     { | ||||||
|   for(bus=usb_get_busses(); bus; bus=bus->next) { |       printf ("usb initialization error message %s\n", libusb_error_name (rc)); | ||||||
|     for(dev=bus->devices; dev; dev=dev->next) { |       return errorCode = USB_ERROR_ACCESS; | ||||||
|       if(dev->descriptor.idVendor == vendor && |  | ||||||
|      dev->descriptor.idProduct == product) { |  | ||||||
|         handle = usb_open(dev); // open the device in order to query strings
 |  | ||||||
|         if(!handle) { |  | ||||||
|           errorCode = USB_ERROR_ACCESS; |  | ||||||
|           printf("si570.c: Warning: cannot open Si570-USB device:\n"); |  | ||||||
|           printf("usb error message: %s\n",usb_strerror()); |  | ||||||
|           continue; |  | ||||||
|     } |     } | ||||||
|         if(vendorName == NULL && productName == NULL) {  //name does not matter
 | 
 | ||||||
|           break; |   libusb_device * * device_list; | ||||||
|  |   int device_count = libusb_get_device_list (nullptr, &device_list); | ||||||
|  |   if (device_count < 0) | ||||||
|  |     { | ||||||
|  |       puts ("no usb devices"); | ||||||
|  |       errorCode = USB_ERROR_NOTFOUND; | ||||||
|     } |     } | ||||||
|         // now check whether the names match
 |   else | ||||||
|         len = usbGetStringAscii(handle, dev->descriptor.iManufacturer, 0x0409, string, sizeof(string)); |     { | ||||||
|         if(len < 0) { |       for (int i = 0; i < device_count; ++i) | ||||||
|           errorCode = USB_ERROR_IO; |         { | ||||||
|           printf("si570.c: Warning: cannot query manufacturer for Si570-USB device:\n"); |           libusb_device * device = device_list[i]; | ||||||
|           printf("usb error message: %s\n",usb_strerror()); |           libusb_device_descriptor descriptor; | ||||||
|     } else { |           if ((rc = libusb_get_device_descriptor (device, &descriptor)) < 0) | ||||||
|           errorCode = USB_ERROR_NOTFOUND; |             { | ||||||
|            //fprintf(stderr, "seen device from vendor ->%s<-\n", string);
 |               printf ("usb get devive descriptor error message %s\n", libusb_error_name (rc)); | ||||||
|           if(strcmp(string, vendorName) == 0){ |               errorCode = USB_ERROR_ACCESS; | ||||||
|             len = usbGetStringAscii(handle, dev->descriptor.iProduct, |               continue; | ||||||
|                     0x0409, string, sizeof(string)); |             } | ||||||
|             if(len < 0) { |           if (vendor == descriptor.idVendor && product == descriptor.idProduct) | ||||||
|               errorCode = USB_ERROR_IO; |             { | ||||||
|               printf("si570.c: Warning: cannot query product for Si570-USB device: \n"); |               // now we must open the device to query strings
 | ||||||
|               printf("usb error message: %s\n",usb_strerror()); |               if ((rc = libusb_open (device, &handle)) < 0) | ||||||
|         } else { |                 { | ||||||
|               errorCode = USB_ERROR_NOTFOUND; |                   printf ("usb open device descriptor error message %s\n", libusb_error_name (rc)); | ||||||
|               // fprintf(stderr, "seen product ->%s<-\n", string);
 |                   errorCode = USB_ERROR_ACCESS; | ||||||
|               if(strcmp(string, productName) == 0) { |                   continue; | ||||||
|         len = usbGetStringAscii(handle, dev->descriptor.iSerialNumber, |                 } | ||||||
|              0x0409, serialNumberString, sizeof(serialNumberString)); |               if (!vendorName && !productName) | ||||||
|         if (len < 0) { |                 { | ||||||
|           errorCode = USB_ERROR_IO; |                   break;            // good to go
 | ||||||
|           printf("si570.c: Warning: cannot query serial number for Si570-USB device: \n"); |                 } | ||||||
|                   printf("usb error message: %s\n",usb_strerror()); |               if (libusb_get_string_descriptor_ascii (handle, descriptor.iManufacturer | ||||||
|         } else { |                                                       , reinterpret_cast<unsigned char *> (buffer), sizeof buffer) < 0) | ||||||
|           errorCode = USB_ERROR_NOTFOUND; |                 { | ||||||
|           if ((usbSerialID == NULL) || |                   printf ("usb get vendor name error message %s\n", libusb_error_name (rc)); | ||||||
|               (strcmp(serialNumberString, usbSerialID) == 0)) { |                   errorCode = USB_ERROR_IO; | ||||||
| //                    printf("\nOpen Si570 USB device: OK\n");
 |                 } | ||||||
| //                    printf("usbSerialID          : %s\n",serialNumberString);
 |               else | ||||||
|             break; |                 { | ||||||
|           } |                   if (!vendorName || !strcmp (buffer, vendorName)) | ||||||
|  |                     { | ||||||
|  |                       if (libusb_get_string_descriptor_ascii (handle, descriptor.iProduct | ||||||
|  |                                                               , reinterpret_cast<unsigned char *> (buffer), sizeof buffer) < 0) | ||||||
|  |                         { | ||||||
|  |                           printf ("usb get product name error message %s\n", libusb_error_name (rc)); | ||||||
|  |                           errorCode = USB_ERROR_IO; | ||||||
|  |                         } | ||||||
|  |                       else | ||||||
|  |                         { | ||||||
|  |                           if (!productName || !strcmp (buffer, productName)) | ||||||
|  |                             { | ||||||
|  |                               if (libusb_get_string_descriptor_ascii (handle, descriptor.iSerialNumber | ||||||
|  |                                                                       , reinterpret_cast<unsigned char *> (buffer), sizeof buffer) < 0) | ||||||
|  |                                 { | ||||||
|  |                                   printf ("usb get serial number error message %s\n", libusb_error_name (rc)); | ||||||
|  |                                   errorCode = USB_ERROR_IO; | ||||||
|  |                                 } | ||||||
|  |                               else | ||||||
|  |                                 { | ||||||
|  |                                   if (!usbSerialID || !strcmp (buffer, usbSerialID)) | ||||||
|  |                                     { | ||||||
|  |                                       break; // good to go
 | ||||||
|  |                                     } | ||||||
|  |                                 } | ||||||
|  |                             } | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |               libusb_close (handle); | ||||||
|  |               handle = nullptr; | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|           } |       libusb_free_device_list (device_list, 1); | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } |     } | ||||||
|         usb_close(handle); |   if (handle) | ||||||
|         handle = NULL; |     { | ||||||
|       } |       errorCode = USB_SUCCESS; | ||||||
|  |       *udh = handle; | ||||||
|     } |     } | ||||||
|     if(handle) break; |  | ||||||
|   } |  | ||||||
|   if(handle != NULL) { |  | ||||||
|     errorCode = USB_SUCCESS; |  | ||||||
|     *device = handle; |  | ||||||
|   } |  | ||||||
|   return errorCode; |   return errorCode; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -221,7 +206,7 @@ void setLongWord( int value, char * bytes) | |||||||
|   bytes[3] = ((value & 0xff000000) >> 24) & 0xff; |   bytes[3] = ((value & 0xff000000) >> 24) & 0xff; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int setFreqByValue(usb_dev_handle * handle, double frequency) | int setFreqByValue(libusb_device_handle * handle, double frequency) | ||||||
| { | { | ||||||
| // Windows Doc from PE0FKO:
 | // Windows Doc from PE0FKO:
 | ||||||
| //
 | //
 | ||||||
| @ -236,7 +221,7 @@ int setFreqByValue(usb_dev_handle * handle, double frequency) | |||||||
| // Default:    None
 | // Default:    None
 | ||||||
| //
 | //
 | ||||||
| // Parameters:
 | // Parameters:
 | ||||||
| //     requesttype:    USB_ENDPOINT_OUT
 | //     requesttype:    LIBUSB_ENDPOINT_OUT
 | ||||||
| //     request:         0x32
 | //     request:         0x32
 | ||||||
| //     value:           0
 | //     value:           0
 | ||||||
| //     index:           0
 | //     index:           0
 | ||||||
| @ -264,14 +249,14 @@ int setFreqByValue(usb_dev_handle * handle, double frequency) | |||||||
|   err_cnt =0; |   err_cnt =0; | ||||||
|  set_again:; |  set_again:; | ||||||
|   setLongWord(round(frequency * 2097152.0), buffer);  //   2097152=2^21
 |   setLongWord(round(frequency * 2097152.0), buffer);  //   2097152=2^21
 | ||||||
|   retval=usb_control_msg( |   retval = libusb_control_transfer ( | ||||||
|          handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, |                                     handle, LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_OUT, | ||||||
|          request, |                                     request, | ||||||
|          value, |                                     value, | ||||||
|          my_index, |                                     my_index, | ||||||
|          buffer, |                                     reinterpret_cast<unsigned char *> (buffer), | ||||||
|          sizeof(buffer), |                                     sizeof(buffer), | ||||||
|          5000); |                                     5000); | ||||||
|   if (retval != 4) { |   if (retval != 4) { | ||||||
|     err_cnt ++; |     err_cnt ++; | ||||||
|     if(err_cnt < MAX_USB_ERR_CNT) { |     if(err_cnt < MAX_USB_ERR_CNT) { | ||||||
| @ -279,7 +264,7 @@ int setFreqByValue(usb_dev_handle * handle, double frequency) | |||||||
|       goto set_again; |       goto set_again; | ||||||
|     } else { |     } else { | ||||||
|       printf("Error when setting frequency, returncode=%i\n",retval); |       printf("Error when setting frequency, returncode=%i\n",retval); | ||||||
|       printf("usb error message: %s\n", usb_strerror()); |       printf("usb error message: %s\n", libusb_error_name (retval)); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   return retval; |   return retval; | ||||||
|  | |||||||
| @ -29,7 +29,7 @@ SignalMeter::~SignalMeter() | |||||||
| void SignalMeter::paintEvent( QPaintEvent * ) | void SignalMeter::paintEvent( QPaintEvent * ) | ||||||
| { | { | ||||||
|     QPainter p; |     QPainter p; | ||||||
|     p.begin(this); | 
 | ||||||
|     p.drawLine(22, 10, 22, 130); |     p.drawLine(22, 10, 22, 130); | ||||||
| 
 | 
 | ||||||
|     for ( int i = 0; i <= 60; i += 10 ) { |     for ( int i = 0; i <= 60; i += 10 ) { | ||||||
|  | |||||||
| @ -331,9 +331,7 @@ void SoundInThread::inputUDP() | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   // Set this socket's total buffer space for received UDP packets
 |   // Set this socket's total buffer space for received UDP packets
 | ||||||
|   int v=141600; |   udpSocket->setSocketOption (QUdpSocket::ReceiveBufferSizeSocketOption, 141600); | ||||||
|   ::setsockopt(udpSocket->socketDescriptor(), SOL_SOCKET, SO_RCVBUF, |  | ||||||
|                (char *)&v, sizeof(v)); |  | ||||||
| 
 | 
 | ||||||
|   bool qe = quitExecution; |   bool qe = quitExecution; | ||||||
|   struct linradBuffer { |   struct linradBuffer { | ||||||
|  | |||||||
| @ -24,10 +24,10 @@ typedef struct   //Parameters sent to or received from callback function | |||||||
| } paUserData; | } paUserData; | ||||||
| 
 | 
 | ||||||
| //--------------------------------------------------------------- d2aCallback
 | //--------------------------------------------------------------- d2aCallback
 | ||||||
| extern "C" int d2aCallback(const void *inputBuffer, void *outputBuffer, | extern "C" int d2aCallback(const void * /*inputBuffer*/, void *outputBuffer, | ||||||
|                            unsigned long framesToProcess, |                            unsigned long framesToProcess, | ||||||
|                            const PaStreamCallbackTimeInfo* timeInfo, |                            const PaStreamCallbackTimeInfo* /*timeInfo*/, | ||||||
|                            PaStreamCallbackFlags statusFlags, |                            PaStreamCallbackFlags /*statusFlags*/, | ||||||
|                            void *userData ) |                            void *userData ) | ||||||
| { | { | ||||||
|   paUserData *udata=(paUserData*)userData; |   paUserData *udata=(paUserData*)userData; | ||||||
|  | |||||||
| @ -37,44 +37,35 @@ void TxTune::reject() | |||||||
| void TxTune::on_pwrSlider_valueChanged(int n) | void TxTune::on_pwrSlider_valueChanged(int n) | ||||||
| { | { | ||||||
|   txPower=n; |   txPower=n; | ||||||
|   QString t; |   ui->labPower->setText (QString {"%1 %"}.arg (n)); | ||||||
|   t.sprintf("%d %%",n); |  | ||||||
|   ui->labPower->setText(t); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void TxTune::on_ampSlider_valueChanged(int n) | void TxTune::on_ampSlider_valueChanged(int n) | ||||||
| { | { | ||||||
|   m_iqAmp1=n; |   m_iqAmp1=n; | ||||||
|   iqAmp=10*m_iqAmp1 + m_iqAmp2; |   iqAmp=10*m_iqAmp1 + m_iqAmp2; | ||||||
|   QString t; |   ui->labAmpReal->setText (QString::number (1.0 + 0.0001 * iqAmp, 'f', 4)); | ||||||
|   t.sprintf("%.4f",1.0 + 0.0001*iqAmp); |  | ||||||
|   ui->labAmpReal->setText(t); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void TxTune::on_fineAmpSlider_valueChanged(int n) | void TxTune::on_fineAmpSlider_valueChanged(int n) | ||||||
| { | { | ||||||
|   m_iqAmp2=n; |   m_iqAmp2=n; | ||||||
|   iqAmp=10*m_iqAmp1 + m_iqAmp2; |   iqAmp=10*m_iqAmp1 + m_iqAmp2; | ||||||
|   QString t; |   ui->labAmpReal->setText (QString::number (1.0 + 0.0001*iqAmp, 'f', 4)); | ||||||
|   t.sprintf("%.4f",1.0 + 0.0001*iqAmp); | } | ||||||
|   ui->labAmpReal->setText(t);} |  | ||||||
| 
 | 
 | ||||||
| void TxTune::on_phaSlider_valueChanged(int n) | void TxTune::on_phaSlider_valueChanged(int n) | ||||||
| { | { | ||||||
|   m_iqPha1=n; |   m_iqPha1=n; | ||||||
|   iqPhase=10*m_iqPha1 + m_iqPha2; |   iqPhase=10*m_iqPha1 + m_iqPha2; | ||||||
|   QString t; |   ui->labPhaReal->setText (QString::number (0.01*iqPhase, 'f', 2)); | ||||||
|   t.sprintf("%.2f",0.01*iqPhase); |  | ||||||
|   ui->labPhaReal->setText(t); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void TxTune::on_finePhaSlider_valueChanged(int n) | void TxTune::on_finePhaSlider_valueChanged(int n) | ||||||
| { | { | ||||||
|   m_iqPha2=n; |   m_iqPha2=n; | ||||||
|   iqPhase=10*m_iqPha1 + m_iqPha2; |   iqPhase=10*m_iqPha1 + m_iqPha2; | ||||||
|   QString t; |   ui->labPhaReal->setText (QString::number (0.01*iqPhase, 'f', 2)); | ||||||
|   t.sprintf("%.2f",0.01*iqPhase); |  | ||||||
|   ui->labPhaReal->setText(t); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void TxTune::set_iqAmp(int n) | void TxTune::set_iqAmp(int n) | ||||||
|  | |||||||
							
								
								
									
										409
									
								
								map65/usb.h
									
									
									
									
									
								
							
							
						
						
									
										409
									
								
								map65/usb.h
									
									
									
									
									
								
							| @ -1,409 +0,0 @@ | |||||||
| #ifndef __USB_H__ |  | ||||||
| #define __USB_H__ |  | ||||||
| 
 |  | ||||||
| #include <stdlib.h> |  | ||||||
| #include <windows.h> |  | ||||||
| 
 |  | ||||||
| /*
 |  | ||||||
|  * 'interface' is defined somewhere in the Windows header files. This macro |  | ||||||
|  * is deleted here to avoid conflicts and compile errors. |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #ifdef interface |  | ||||||
| #undef interface |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| /*
 |  | ||||||
|  * PATH_MAX from limits.h can't be used on Windows if the dll and |  | ||||||
|  * import libraries are build/used by different compilers |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #define LIBUSB_PATH_MAX 512 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /*
 |  | ||||||
|  * USB spec information |  | ||||||
|  * |  | ||||||
|  * This is all stuff grabbed from various USB specs and is pretty much |  | ||||||
|  * not subject to change |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| /*
 |  | ||||||
|  * Device and/or Interface Class codes |  | ||||||
|  */ |  | ||||||
| #define USB_CLASS_PER_INTERFACE		0	/* for DeviceClass */ |  | ||||||
| #define USB_CLASS_AUDIO			      1 |  | ||||||
| #define USB_CLASS_COMM			      2 |  | ||||||
| #define USB_CLASS_HID			        3 |  | ||||||
| #define USB_CLASS_PRINTER		      7 |  | ||||||
| #define USB_CLASS_MASS_STORAGE		8 |  | ||||||
| #define USB_CLASS_HUB			        9 |  | ||||||
| #define USB_CLASS_DATA			      10 |  | ||||||
| #define USB_CLASS_VENDOR_SPEC		  0xff |  | ||||||
| 
 |  | ||||||
| /*
 |  | ||||||
|  * Descriptor types |  | ||||||
|  */ |  | ||||||
| #define USB_DT_DEVICE			0x01 |  | ||||||
| #define USB_DT_CONFIG			0x02 |  | ||||||
| #define USB_DT_STRING			0x03 |  | ||||||
| #define USB_DT_INTERFACE	0x04 |  | ||||||
| #define USB_DT_ENDPOINT		0x05 |  | ||||||
| 
 |  | ||||||
| #define USB_DT_HID			0x21 |  | ||||||
| #define USB_DT_REPORT		0x22 |  | ||||||
| #define USB_DT_PHYSICAL	0x23 |  | ||||||
| #define USB_DT_HUB			0x29 |  | ||||||
| 
 |  | ||||||
| /*
 |  | ||||||
|  * Descriptor sizes per descriptor type |  | ||||||
|  */ |  | ||||||
| #define USB_DT_DEVICE_SIZE		18 |  | ||||||
| #define USB_DT_CONFIG_SIZE		9 |  | ||||||
| #define USB_DT_INTERFACE_SIZE		9 |  | ||||||
| #define USB_DT_ENDPOINT_SIZE		7 |  | ||||||
| #define USB_DT_ENDPOINT_AUDIO_SIZE	9	/* Audio extension */ |  | ||||||
| #define USB_DT_HUB_NONVAR_SIZE		7 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /* ensure byte-packed structures */ |  | ||||||
| #include <pshpack1.h> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| /* All standard descriptors have these 2 fields in common */ |  | ||||||
| struct usb_descriptor_header |  | ||||||
| { |  | ||||||
|     unsigned char  bLength; |  | ||||||
|     unsigned char  bDescriptorType; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| /* String descriptor */ |  | ||||||
| struct usb_string_descriptor |  | ||||||
| { |  | ||||||
|     unsigned char  bLength; |  | ||||||
|     unsigned char  bDescriptorType; |  | ||||||
|     unsigned short wData[1]; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| /* HID descriptor */ |  | ||||||
| struct usb_hid_descriptor |  | ||||||
| { |  | ||||||
|     unsigned char  bLength; |  | ||||||
|     unsigned char  bDescriptorType; |  | ||||||
|     unsigned short bcdHID; |  | ||||||
|     unsigned char  bCountryCode; |  | ||||||
|     unsigned char  bNumDescriptors; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| /* Endpoint descriptor */ |  | ||||||
| #define USB_MAXENDPOINTS	32 |  | ||||||
| struct usb_endpoint_descriptor |  | ||||||
| { |  | ||||||
|     unsigned char  bLength; |  | ||||||
|     unsigned char  bDescriptorType; |  | ||||||
|     unsigned char  bEndpointAddress; |  | ||||||
|     unsigned char  bmAttributes; |  | ||||||
|     unsigned short wMaxPacketSize; |  | ||||||
|     unsigned char  bInterval; |  | ||||||
|     unsigned char  bRefresh; |  | ||||||
|     unsigned char  bSynchAddress; |  | ||||||
| 
 |  | ||||||
|     unsigned char *extra;	/* Extra descriptors */ |  | ||||||
|     int extralen; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #define USB_ENDPOINT_ADDRESS_MASK	0x0f    /* in bEndpointAddress */ |  | ||||||
| #define USB_ENDPOINT_DIR_MASK		  0x80 |  | ||||||
| 
 |  | ||||||
| #define USB_ENDPOINT_TYPE_MASK		0x03    /* in bmAttributes */ |  | ||||||
| #define USB_ENDPOINT_TYPE_CONTROL	    0 |  | ||||||
| #define USB_ENDPOINT_TYPE_ISOCHRONOUS	1 |  | ||||||
| #define USB_ENDPOINT_TYPE_BULK		    2 |  | ||||||
| #define USB_ENDPOINT_TYPE_INTERRUPT	  3 |  | ||||||
| 
 |  | ||||||
| /* Interface descriptor */ |  | ||||||
| #define USB_MAXINTERFACES	32 |  | ||||||
| struct usb_interface_descriptor |  | ||||||
| { |  | ||||||
|     unsigned char  bLength; |  | ||||||
|     unsigned char  bDescriptorType; |  | ||||||
|     unsigned char  bInterfaceNumber; |  | ||||||
|     unsigned char  bAlternateSetting; |  | ||||||
|     unsigned char  bNumEndpoints; |  | ||||||
|     unsigned char  bInterfaceClass; |  | ||||||
|     unsigned char  bInterfaceSubClass; |  | ||||||
|     unsigned char  bInterfaceProtocol; |  | ||||||
|     unsigned char  iInterface; |  | ||||||
| 
 |  | ||||||
|     struct usb_endpoint_descriptor *endpoint; |  | ||||||
| 
 |  | ||||||
|     unsigned char *extra;	/* Extra descriptors */ |  | ||||||
|     int extralen; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #define USB_MAXALTSETTING	128	/* Hard limit */ |  | ||||||
| 
 |  | ||||||
| struct usb_interface |  | ||||||
| { |  | ||||||
|     struct usb_interface_descriptor *altsetting; |  | ||||||
| 
 |  | ||||||
|     int num_altsetting; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| /* Configuration descriptor information.. */ |  | ||||||
| #define USB_MAXCONFIG		8 |  | ||||||
| struct usb_config_descriptor |  | ||||||
| { |  | ||||||
|     unsigned char  bLength; |  | ||||||
|     unsigned char  bDescriptorType; |  | ||||||
|     unsigned short wTotalLength; |  | ||||||
|     unsigned char  bNumInterfaces; |  | ||||||
|     unsigned char  bConfigurationValue; |  | ||||||
|     unsigned char  iConfiguration; |  | ||||||
|     unsigned char  bmAttributes; |  | ||||||
|     unsigned char  MaxPower; |  | ||||||
| 
 |  | ||||||
|     struct usb_interface *interface; |  | ||||||
| 
 |  | ||||||
|     unsigned char *extra;	/* Extra descriptors */ |  | ||||||
|     int extralen; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| /* Device descriptor */ |  | ||||||
| struct usb_device_descriptor |  | ||||||
| { |  | ||||||
|     unsigned char  bLength; |  | ||||||
|     unsigned char  bDescriptorType; |  | ||||||
|     unsigned short bcdUSB; |  | ||||||
|     unsigned char  bDeviceClass; |  | ||||||
|     unsigned char  bDeviceSubClass; |  | ||||||
|     unsigned char  bDeviceProtocol; |  | ||||||
|     unsigned char  bMaxPacketSize0; |  | ||||||
|     unsigned short idVendor; |  | ||||||
|     unsigned short idProduct; |  | ||||||
|     unsigned short bcdDevice; |  | ||||||
|     unsigned char  iManufacturer; |  | ||||||
|     unsigned char  iProduct; |  | ||||||
|     unsigned char  iSerialNumber; |  | ||||||
|     unsigned char  bNumConfigurations; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| struct usb_ctrl_setup |  | ||||||
| { |  | ||||||
|     unsigned char  bRequestType; |  | ||||||
|     unsigned char  bRequest; |  | ||||||
|     unsigned short wValue; |  | ||||||
|     unsigned short wIndex; |  | ||||||
|     unsigned short wLength; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| /*
 |  | ||||||
|  * Standard requests |  | ||||||
|  */ |  | ||||||
| #define USB_REQ_GET_STATUS		    0x00 |  | ||||||
| #define USB_REQ_CLEAR_FEATURE	    0x01 |  | ||||||
| /* 0x02 is reserved */ |  | ||||||
| #define USB_REQ_SET_FEATURE		    0x03 |  | ||||||
| /* 0x04 is reserved */ |  | ||||||
| #define USB_REQ_SET_ADDRESS		    0x05 |  | ||||||
| #define USB_REQ_GET_DESCRIPTOR		0x06 |  | ||||||
| #define USB_REQ_SET_DESCRIPTOR		0x07 |  | ||||||
| #define USB_REQ_GET_CONFIGURATION	0x08 |  | ||||||
| #define USB_REQ_SET_CONFIGURATION	0x09 |  | ||||||
| #define USB_REQ_GET_INTERFACE		  0x0A |  | ||||||
| #define USB_REQ_SET_INTERFACE		  0x0B |  | ||||||
| #define USB_REQ_SYNCH_FRAME		    0x0C |  | ||||||
| 
 |  | ||||||
| #define USB_TYPE_STANDARD		(0x00 << 5) |  | ||||||
| #define USB_TYPE_CLASS			(0x01 << 5) |  | ||||||
| #define USB_TYPE_VENDOR			(0x02 << 5) |  | ||||||
| #define USB_TYPE_RESERVED		(0x03 << 5) |  | ||||||
| 
 |  | ||||||
| #define USB_RECIP_DEVICE		0x00 |  | ||||||
| #define USB_RECIP_INTERFACE	0x01 |  | ||||||
| #define USB_RECIP_ENDPOINT	0x02 |  | ||||||
| #define USB_RECIP_OTHER			0x03 |  | ||||||
| 
 |  | ||||||
| /*
 |  | ||||||
|  * Various libusb API related stuff |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #define USB_ENDPOINT_IN			0x80 |  | ||||||
| #define USB_ENDPOINT_OUT		0x00 |  | ||||||
| 
 |  | ||||||
| /* Error codes */ |  | ||||||
| #define USB_ERROR_BEGIN			500000 |  | ||||||
| 
 |  | ||||||
| /*
 |  | ||||||
|  * This is supposed to look weird. This file is generated from autoconf |  | ||||||
|  * and I didn't want to make this too complicated. |  | ||||||
|  */ |  | ||||||
| #define USB_LE16_TO_CPU(x) |  | ||||||
| 
 |  | ||||||
| /* Data types */ |  | ||||||
| /* struct usb_device; */ |  | ||||||
| /* struct usb_bus; */ |  | ||||||
| 
 |  | ||||||
| struct usb_device |  | ||||||
| { |  | ||||||
|     struct usb_device *next, *prev; |  | ||||||
| 
 |  | ||||||
|     char filename[LIBUSB_PATH_MAX]; |  | ||||||
| 
 |  | ||||||
|     struct usb_bus *bus; |  | ||||||
| 
 |  | ||||||
|     struct usb_device_descriptor descriptor; |  | ||||||
|     struct usb_config_descriptor *config; |  | ||||||
| 
 |  | ||||||
|     void *dev;		/* Darwin support */ |  | ||||||
| 
 |  | ||||||
|     unsigned char devnum; |  | ||||||
| 
 |  | ||||||
|     unsigned char num_children; |  | ||||||
|     struct usb_device **children; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| struct usb_bus |  | ||||||
| { |  | ||||||
|     struct usb_bus *next, *prev; |  | ||||||
| 
 |  | ||||||
|     char dirname[LIBUSB_PATH_MAX]; |  | ||||||
| 
 |  | ||||||
|     struct usb_device *devices; |  | ||||||
|     unsigned long location; |  | ||||||
| 
 |  | ||||||
|     struct usb_device *root_dev; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| /* Version information, Windows specific */ |  | ||||||
| struct usb_version |  | ||||||
| { |  | ||||||
|     struct |  | ||||||
|     { |  | ||||||
|         int major; |  | ||||||
|         int minor; |  | ||||||
|         int micro; |  | ||||||
|         int nano; |  | ||||||
|     } dll; |  | ||||||
|     struct |  | ||||||
|     { |  | ||||||
|         int major; |  | ||||||
|         int minor; |  | ||||||
|         int micro; |  | ||||||
|         int nano; |  | ||||||
|     } driver; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| struct usb_dev_handle; |  | ||||||
| typedef struct usb_dev_handle usb_dev_handle; |  | ||||||
| 
 |  | ||||||
| /* Variables */ |  | ||||||
| #ifndef __USB_C__ |  | ||||||
| #define usb_busses usb_get_busses() |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| #include <poppack.h> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| #ifdef __cplusplus |  | ||||||
| extern "C" |  | ||||||
| { |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
|     /* Function prototypes */ |  | ||||||
| 
 |  | ||||||
|     /* usb.c */ |  | ||||||
|     usb_dev_handle *usb_open(struct usb_device *dev); |  | ||||||
|     int usb_close(usb_dev_handle *dev); |  | ||||||
|     int usb_get_string(usb_dev_handle *dev, int index, int langid, char *buf, |  | ||||||
|                        size_t buflen); |  | ||||||
|     int usb_get_string_simple(usb_dev_handle *dev, int index, char *buf, |  | ||||||
|                               size_t buflen); |  | ||||||
| 
 |  | ||||||
|     /* descriptors.c */ |  | ||||||
|     int usb_get_descriptor_by_endpoint(usb_dev_handle *udev, int ep, |  | ||||||
|                                        unsigned char type, unsigned char index, |  | ||||||
|                                        void *buf, int size); |  | ||||||
|     int usb_get_descriptor(usb_dev_handle *udev, unsigned char type, |  | ||||||
|                            unsigned char index, void *buf, int size); |  | ||||||
| 
 |  | ||||||
|     /* <arch>.c */ |  | ||||||
|     int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size, |  | ||||||
|                        int timeout); |  | ||||||
|     int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, |  | ||||||
|                       int timeout); |  | ||||||
|     int usb_interrupt_write(usb_dev_handle *dev, int ep, char *bytes, int size, |  | ||||||
|                             int timeout); |  | ||||||
|     int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size, |  | ||||||
|                            int timeout); |  | ||||||
|     int usb_control_msg(usb_dev_handle *dev, int requesttype, int request, |  | ||||||
|                         int value, int index, char *bytes, int size, |  | ||||||
|                         int timeout); |  | ||||||
|     int usb_set_configuration(usb_dev_handle *dev, int configuration); |  | ||||||
|     int usb_claim_interface(usb_dev_handle *dev, int interface); |  | ||||||
|     int usb_release_interface(usb_dev_handle *dev, int interface); |  | ||||||
|     int usb_set_altinterface(usb_dev_handle *dev, int alternate); |  | ||||||
|     int usb_resetep(usb_dev_handle *dev, unsigned int ep); |  | ||||||
|     int usb_clear_halt(usb_dev_handle *dev, unsigned int ep); |  | ||||||
|     int usb_reset(usb_dev_handle *dev); |  | ||||||
| 
 |  | ||||||
|     char *usb_strerror(void); |  | ||||||
| 
 |  | ||||||
|     void usb_init(void); |  | ||||||
|     void usb_set_debug(int level); |  | ||||||
|     int usb_find_busses(void); |  | ||||||
|     int usb_find_devices(void); |  | ||||||
|     struct usb_device *usb_device(usb_dev_handle *dev); |  | ||||||
|     struct usb_bus *usb_get_busses(void); |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     /* Windows specific functions */ |  | ||||||
| 
 |  | ||||||
| #define LIBUSB_HAS_INSTALL_SERVICE_NP 1 |  | ||||||
|     int usb_install_service_np(void); |  | ||||||
|     void CALLBACK usb_install_service_np_rundll(HWND wnd, HINSTANCE instance, |  | ||||||
|             LPSTR cmd_line, int cmd_show); |  | ||||||
| 
 |  | ||||||
| #define LIBUSB_HAS_UNINSTALL_SERVICE_NP 1 |  | ||||||
|     int usb_uninstall_service_np(void); |  | ||||||
|     void CALLBACK usb_uninstall_service_np_rundll(HWND wnd, HINSTANCE instance, |  | ||||||
|             LPSTR cmd_line, int cmd_show); |  | ||||||
| 
 |  | ||||||
| #define LIBUSB_HAS_INSTALL_DRIVER_NP 1 |  | ||||||
|     int usb_install_driver_np(const char *inf_file); |  | ||||||
|     void CALLBACK usb_install_driver_np_rundll(HWND wnd, HINSTANCE instance, |  | ||||||
|             LPSTR cmd_line, int cmd_show); |  | ||||||
| 
 |  | ||||||
| #define LIBUSB_HAS_TOUCH_INF_FILE_NP 1 |  | ||||||
|     int usb_touch_inf_file_np(const char *inf_file); |  | ||||||
|     void CALLBACK usb_touch_inf_file_np_rundll(HWND wnd, HINSTANCE instance, |  | ||||||
|             LPSTR cmd_line, int cmd_show); |  | ||||||
| 
 |  | ||||||
| #define LIBUSB_HAS_INSTALL_NEEDS_RESTART_NP 1 |  | ||||||
|     int usb_install_needs_restart_np(void); |  | ||||||
| 
 |  | ||||||
|     const struct usb_version *usb_get_version(void); |  | ||||||
| 
 |  | ||||||
|     int usb_isochronous_setup_async(usb_dev_handle *dev, void **context, |  | ||||||
|                                     unsigned char ep, int pktsize); |  | ||||||
|     int usb_bulk_setup_async(usb_dev_handle *dev, void **context, |  | ||||||
|                              unsigned char ep); |  | ||||||
|     int usb_interrupt_setup_async(usb_dev_handle *dev, void **context, |  | ||||||
|                                   unsigned char ep); |  | ||||||
| 
 |  | ||||||
|     int usb_submit_async(void *context, char *bytes, int size); |  | ||||||
|     int usb_reap_async(void *context, int timeout); |  | ||||||
|     int usb_reap_async_nocancel(void *context, int timeout); |  | ||||||
|     int usb_cancel_async(void *context); |  | ||||||
|     int usb_free_async(void **context); |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| #ifdef __cplusplus |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #endif /* __USB_H__ */ |  | ||||||
| 
 |  | ||||||
| @ -380,14 +380,9 @@ void WideGraph::tx570() | |||||||
| 
 | 
 | ||||||
| void WideGraph::updateFreqLabel() | void WideGraph::updateFreqLabel() | ||||||
| { | { | ||||||
|   double rxFreq=ui->widePlot->rxFreq(); |   auto rxFreq = QString {"%1"}.arg (ui->widePlot->rxFreq (), 10, 'f', 6).insert (7, '.'); | ||||||
|   double txFreq=ui->widePlot->txFreq(); |   auto txFreq = QString {"%1"}.arg (ui->widePlot->txFreq (), 10, 'f', 6).insert (7, '.'); | ||||||
|   QString t; |   ui->labFreq->setText (QString {"Rx:  %1\nTx:  %2"}.arg (rxFreq, txFreq)); | ||||||
|   t.sprintf("Rx:  %10.6f",rxFreq); |  | ||||||
|   QString t1=t.mid(0,12) + "." + t.mid(12,3); |  | ||||||
|   t.sprintf("Tx:  %10.6f",txFreq); |  | ||||||
|   QString t2=t.mid(0,12) + "." + t.mid(12,3); |  | ||||||
|   ui->labFreq->setText(t1 + "\n" + t2); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void WideGraph::enableSetRxHardware(bool b) | void WideGraph::enableSetRxHardware(bool b) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user