Advertisement
JetForMe

Untitled

Apr 18th, 2017
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 2.81 KB | None | 0 0
  1. #define LGS_MAX_MESSAGE_SIZE 256
  2.  
  3. struct lgs_context_t {};
  4. struct lgs_connection_t {};
  5. struct lgs_request_t {};
  6.  
  7. typedef struct {
  8.     struct lgs_connection_t* connection;
  9.     struct lgs_request_t* request;
  10.     void* user_ptr;
  11.     char message[LGS_MAX_MESSAGE_SIZE];
  12. } lgs_result_info_t;
  13.  
  14. typedef struct {
  15.     void* user_ptr;
  16.  
  17.     void(*callback_progress)(const lgs_result_info_t*);
  18.     void(*callback_succeeded)(const lgs_result_info_t*);
  19.     void(*callback_failed)(const lgs_result_info_t*);
  20. } lgs_request_params_t;
  21.  
  22. typedef struct {
  23.     uint32_t request_timeout;
  24.     size_t list_capacity;
  25. } lgs_device_enumeration_params_t;
  26.  
  27. typedef struct {
  28.     lgs_connection_settings_t connection_settings;
  29.     char name[128];
  30.     char serial_number[32];
  31.     char hw_version[32];
  32.     char fw_version[32];
  33.     bool is_compatible;
  34. } lgs_enumerated_device_info_t;
  35.  
  36. struct lgs_request_t*
  37. lgs_req_cmd_enumerate_devices(struct lgs_context_t* ctx,
  38.     const lgs_request_params_t* request_params,
  39.     const lgs_device_enumeration_params_t* enumeration_params,
  40.     lgs_enumerated_device_info_t* list,
  41.     size_t* list_size);
  42.  
  43. ------------------------
  44.  
  45. class
  46. APIWrapper
  47. {
  48.     init()
  49.     {
  50.         //  Set up the callbacks…
  51.    
  52.         self.reqParams.user_ptr = UnsafeMutableRawPointer(Unmanaged.passUnretained(self).toOpaque())
  53.    
  54.         self.reqParams.callback_progress =
  55.         { inInfo in
  56.             let info = unsafeBitCast(inInfo, to: lgs_result_info_t.self)
  57.             let this = Unmanaged<APIWrapper>.fromOpaque(info.user_ptr).takeUnretainedValue()
  58.             this.callbackProgress(info: info)
  59.         }
  60.    
  61.         self.reqParams.callback_succeeded =
  62.         { inInfo in
  63.             let info = unsafeBitCast(inInfo, to: lgs_result_info_t.self)
  64.             let this = Unmanaged<APIWrapper>.fromOpaque(info.user_ptr).takeUnretainedValue()
  65.             this.callbackFailed(info: info)
  66.         }
  67.    
  68.         self.reqParams.callback_failed =
  69.         { inInfo in
  70.             let info = unsafeBitCast(inInfo, to: lgs_result_info_t.self)
  71.             let this = Unmanaged<APIWrapper>.fromOpaque(info.user_ptr).takeUnretainedValue()
  72.             this.callbackSucceeded(info: info)
  73.         }
  74.     }
  75.  
  76.     func
  77.     enumerateDevices()
  78.     {
  79.         var params = lgs_device_enumeration_params_t()
  80.         params.list_capacity = 10
  81.         params.request_timeout = 2000
  82.        
  83.         var count: Int = 0
  84.         let req = lgs_req_cmd_enumerate_devices(self.ctx,
  85.                                                     &self.reqParams,
  86.                                                     &params,
  87.                                                     self.devices,
  88.                                                     &count)
  89.     }
  90.    
  91.     var         devices                     =   UnsafeMutablePointer<lgs_enumerated_device_info_t>.allocate(capacity: 10)
  92.  
  93.     var         ctx:        OpaquePointer?
  94.     var         reqParams                   =   lgs_request_params_t()
  95.  
  96.     func
  97.     callbackProgress(info inInfo: lgs_result_info_t)
  98.     {
  99.         debugLog("Progress")
  100.     }
  101.    
  102.     func
  103.     callbackSucceeded(info inInfo: lgs_result_info_t)
  104.     {
  105.         debugLog("Succeeded")
  106.     }
  107.    
  108.     func
  109.     callbackFailed(info inInfo: lgs_result_info_t)
  110.     {
  111.         debugLog("Failed")
  112.     }
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement