Typica is a free program for professional coffee roasters. https://typica.us
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

qextserialenumerator_p.h 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /****************************************************************************
  2. ** Copyright (c) 2000-2003 Wayne Roth
  3. ** Copyright (c) 2004-2007 Stefan Sander
  4. ** Copyright (c) 2007 Michal Policht
  5. ** Copyright (c) 2008 Brandon Fosdick
  6. ** Copyright (c) 2009-2010 Liam Staskawicz
  7. ** Copyright (c) 2011 Debao Zhang
  8. ** All right reserved.
  9. ** Web: http://code.google.com/p/qextserialport/
  10. **
  11. ** Permission is hereby granted, free of charge, to any person obtaining
  12. ** a copy of this software and associated documentation files (the
  13. ** "Software"), to deal in the Software without restriction, including
  14. ** without limitation the rights to use, copy, modify, merge, publish,
  15. ** distribute, sublicense, and/or sell copies of the Software, and to
  16. ** permit persons to whom the Software is furnished to do so, subject to
  17. ** the following conditions:
  18. **
  19. ** The above copyright notice and this permission notice shall be
  20. ** included in all copies or substantial portions of the Software.
  21. **
  22. ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  23. ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  24. ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  25. ** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  26. ** LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  27. ** OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  28. ** WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  29. **
  30. ****************************************************************************/
  31. #ifndef _QEXTSERIALENUMERATOR_P_H_
  32. #define _QEXTSERIALENUMERATOR_P_H_
  33. //
  34. // W A R N I N G
  35. // -------------
  36. //
  37. // This file is not part of the QESP API. It exists for the convenience
  38. // of other QESP classes. This header file may change from version to
  39. // version without notice, or even be removed.
  40. //
  41. // We mean it.
  42. //
  43. #include "qextserialenumerator.h"
  44. #ifdef Q_OS_WIN
  45. // needed for mingw to pull in appropriate dbt business...
  46. // probably a better way to do this
  47. // http://mingw-users.1079350.n2.nabble.com/DEV-BROADCAST-DEVICEINTERFACE-was-not-declared-in-this-scope-td3552762.html
  48. # ifdef __MINGW32__
  49. # define _WIN32_WINNT 0x0500
  50. # define _WIN32_WINDOWS 0x0500
  51. # define WINVER 0x0500
  52. # endif
  53. # include <QtCore/qt_windows.h>
  54. #endif /*Q_OS_WIN*/
  55. #ifdef Q_OS_MAC
  56. # include <IOKit/usb/IOUSBLib.h>
  57. #endif /*Q_OS_MAC*/
  58. class QextSerialRegistrationWidget;
  59. class QextSerialEnumeratorPrivate
  60. {
  61. Q_DECLARE_PUBLIC(QextSerialEnumerator)
  62. public:
  63. QextSerialEnumeratorPrivate(QextSerialEnumerator * enumrator);
  64. ~QextSerialEnumeratorPrivate();
  65. void platformSpecificInit();
  66. void platformSpecificDestruct();
  67. static QList<QextPortInfo> getPorts_sys();
  68. bool setUpNotifications_sys(bool setup);
  69. #ifdef Q_OS_WIN
  70. LRESULT onDeviceChanged( WPARAM wParam, LPARAM lParam );
  71. bool matchAndDispatchChangedDevice(const QString & deviceID, const GUID & guid, WPARAM wParam);
  72. # ifdef QT_GUI_LIB
  73. QextSerialRegistrationWidget* notificationWidget;
  74. # endif
  75. #endif /*Q_OS_WIN*/
  76. #ifdef Q_OS_MAC
  77. /*!
  78. * Search for serial ports using IOKit.
  79. * \param infoList list with result.
  80. */
  81. static void iterateServicesOSX(io_object_t service, QList<QextPortInfo> & infoList);
  82. static bool getServiceDetailsOSX( io_object_t service, QextPortInfo* portInfo );
  83. void onDeviceDiscoveredOSX( io_object_t service );
  84. void onDeviceTerminatedOSX( io_object_t service );
  85. friend void deviceDiscoveredCallbackOSX( void *ctxt, io_iterator_t serialPortIterator );
  86. friend void deviceTerminatedCallbackOSX( void *ctxt, io_iterator_t serialPortIterator );
  87. IONotificationPortRef notificationPortRef;
  88. #endif // Q_OS_MAC
  89. private:
  90. QextSerialEnumerator * q_ptr;
  91. };
  92. #endif //_QEXTSERIALENUMERATOR_P_H_