SDK Version 1.2.0
AnsuR Technologies ASMIRA SDK
Loading...
Searching...
No Matches
asmirasdk.h
Go to the documentation of this file.
1/****************************************************************
2* Name: asmirasdk.h
3* Purpose: ASMIRA SDK
4* Author: Fredrick Vamstad
5* Created: 2022 - April
6* Updated: 2025 - October
7* Copyright: AnsuR Technologies
8* Dependency: videomodule/libvideomodule
9****************************************************************/
10
11#ifndef ASMIRA_SDK_H
12#define ASMIRA_SDK_H
13
25
27#if defined (__WIN32__) || defined(__WIN64__) || defined(_WINDOWS)
28#define ASDK_WINDOWS
29#include <windows.h>
30#ifndef ASDK_LoadLib
31#define ASDK_LoadLib(a) (asdk::hsdk)LoadLibraryA(a)
32#endif
33#ifndef ASDK_GetProc
34#define ASDK_GetProc(a1, a2) GetProcAddress((HINSTANCE__*)a1, a2)
35#endif
36#ifndef ASDK_FreeLib
37#define ASDK_FreeLib(a) FreeLibrary((HINSTANCE__*)a)
38#endif
39#define ASDK_CALL __cdecl
40#elif defined(__GNUC__)
41#define ASDK_UNIX
42#include <sys/types.h>
43#include <dlfcn.h>
44#include <string.h>
45#ifndef ASDK_LoadLib
46#define ASDK_LoadLib(a) (asdk::hsdk)dlopen(a, RTLD_NOW)
47#endif
48#ifndef ASDK_GetProc
49#define ASDK_GetProc(a1, a2) dlsym(a1, a2)
50#endif
51#ifndef ASDK_FreeLib
52#define ASDK_FreeLib(a) dlclose(a)
53#endif
54#define ASDK_CALL
55#else
56#error Compiler unsupported
57#endif
58
59#include <stdio.h>
60#include <cstdint>
61#include <chrono>
62#include <vector>
64
65#ifndef ASDK_SAFE_ALIAS
66 #define ASDK_SAFE_ALIAS
67#endif
68
69namespace asdk {
71 typedef void* hsdk;
72
73 static const uint8_t VERSION_MAJOR = 2;
74 static const uint8_t VERSION_MINOR = 0;
75 static const uint8_t VERSION_PATCH = 1;
76
90
99
106 // Minor version differ, operations may be affected
108 // Patch version differ, operations not be affected
110 // Someone logged into the server with your credentials
112 // Logged in, but caused the server to kick out another client
114 // Logged in, but wrong type (Sender with Controller account etc)
116 // To many/often login attempts
118 // Server unable to read login data
120 // Requeste capability for user not available
122 };
123
132
140
151 typedef uint32_t RoomFlagValue;
152
155 RoomStatePassword = 1 << 0, // Password protection is enabled
156 RoomStatePreview = 1 << 1, // Preview is enabled
157 };
158 typedef uint32_t RoomStateValue;
159
166
176
185
186 // General user mode (Sender App or Receiver App)
187 enum UserCapability : uint8_t {
189 // Use only one of these bits
194 UserCapabilitySuper = 1 << 6, // Reserved bit for super user
195 UserCapabilityUnsure = 1 << 7 // Connect without knowing the user capability
196 };
197 typedef uint8_t UserCapabilityValue;
198
199 enum DeviceCapability : int {
204 DeviceCapabilityAudioOpus = 1 << 4, // No yet implemented
206 DeviceCapabilityAudioMIC = 1 << 6, // Has microphone or capable of audio input
208 DeviceCapabilityPhotoModeHEIF = 1 << 8, // No yet implemented
209 DeviceCapabilityPhotoModeAVIF = 1 << 9, // No yet implemented
213 DeviceCapabilityDisplay = 1 << 13, // Is not headless or autonomous
214 /*
215 More device capabilities as needed
216 */
218
223
224 // Core Desktop ASMIRA
227 // No yet implemented
230 // Core Headless ASMIRA
234 };
236
239 // Start, decoder may need to be updated
241 // Audio quality mode, Low to HIGH
247 // Reserved for protocol expansion
251 };
252 typedef uint8_t AudioFrameStateValue;
253
254#ifdef ASDK_SAFE_ALIAS
255 #pragma pack(4)
256#endif
257
271
272 typedef struct {
273 int32_t width;
274 int32_t height;
275 int32_t size;
276 uint32_t timeStamp;
277 uint64_t utc;
278 uint8_t* data;
279 }frame_t;
280
309
310 typedef struct {
311 int32_t width;
312 int32_t height;
313 int32_t sourceWidth;
315 int32_t sourceFPS;
316 int32_t targetFPS;
320 int32_t threads;
322 int32_t priority;
324
333
334 typedef struct {
339
341 typedef struct position_klv_values_t {
342 uint64_t unixTime{ 0ULL };
343 float indicatedAirSpeed{ 0.0f };
344 float trueAirSpeed{ 0.0f };
345 float groundSpeed{ 0.0f };
346 double latitude{ 0.0 };
347 double longitude{ 0.0 };
348 double altitude{ 0.0 };
349 float heading{ 0.0f };
350 float pitch{ 0.0f };
351 float roll{ 0.0f };
352 float sensorHorizontalFOV{ 0.0f };
353 float sensorVerticalFOV{ 0.0f };
354 float sensorAzimuth{ 0.0f };
355 float sensorElevationAngle{ 0.0f };
358
360 typedef struct position_nmea_values_t {
361 uint64_t unixTime{ 0ULL };
362 int64_t satVisibleCount{ 0ULL };
363 double dilution{ 0.0 };
364 double groundSpeed{ 0.0 };
365 double latitude{ 0.0 };
366 double longitude{ 0.0 };
367 float heading{ 0.0f };
369
378
384
385 typedef struct bandwidth_statistics_t {
390 unsigned int sizeTotal;
391 // Duration of current report (in milliseconds)
392 unsigned int reportTime;
393
395 unsigned int rtcpPacketLostSize;
397
404
405 using TimePoint = std::chrono::high_resolution_clock::time_point;
406 using TimeMS = std::chrono::milliseconds;
407
409 return std::chrono::high_resolution_clock::now();
410 }
411 inline long long TimeSpent(const TimePoint& timeStart) {
412 return std::chrono::duration_cast<TimeMS>(TimeNow() - timeStart).count();
413 }
414
415 using TimePointSteady = std::chrono::steady_clock::time_point;
417 return std::chrono::steady_clock::now();
418 }
419
420 inline long long TimeSpentSteady(const TimePointSteady& time) {
421 return std::chrono::duration_cast<TimeMS>(TimeNowSteady() - time).count();
422 }
423
424 std::vector<std::pair<TimePoint, unsigned int>> m_streamStats;
425
432
433 typedef struct certificate_t {
434 int len;
435 const char* data{ nullptr }; // Pointer to certificate data, temporary storage only
437
438#ifdef ASDK_SAFE_ALIAS
439 #pragma pack()
440#endif
441
442 // Callback functions
443 typedef void (ASDK_CALL *ServerStateFunc)(const ServerState serverState, void* opaque);
444 typedef void (ASDK_CALL *RoomAnnounceFunc)(const char* roomName, const uint32_t roomID,
445 const asdk::RoomStateValue state,
446 const asdk::RoomFlagValue flags, void *opaque);
447 typedef void (ASDK_CALL *RoomResponseFunc)(const Request request, const RoomResponse response,
448 const void* optionalData, const uint32_t optionalDataSize, void* opaque);
449 typedef void (ASDK_CALL *RoomClientAddedFunc)(const uint32_t clientID, const char* userName, const UserCapabilityValue userCapability,
450 const DeviceCapabilityValue deviceCapability, void* opaque);
451 typedef void (ASDK_CALL *RoomClientRemovedFunc)(const uint32_t clientID, void* opaque);
452 typedef void (ASDK_CALL *AuthenticateResponseFunc)(const AuthenticationResponse authenticateResponse, void* opaque);
453 typedef void (ASDK_CALL *FrameFunc)(const frame_t* frame, void* opaque);
454 typedef void (ASDK_CALL *EncodedStreamFunc)(const StreamType type, const void *data, const uint32_t dataSize, void* opaque);
455 typedef void (ASDK_CALL *EncodedAudioFrameFunc)(const uint16_t srcID, const unsigned int timeStamp,
456 const asdk::AudioFrameStateValue state,
457 const unsigned char* audioEncoded,
458 const size_t audioEncodedSize, void* opaque);
459 typedef void (ASDK_CALL *VideoOptionsFunc)(const video_options_t* videoOptions, void* opaque);
460 typedef void (ASDK_CALL *VideoModeFunc)(const video_mode_t* videoMode, void* opaque);
461 typedef void (ASDK_CALL *PositionValuesFunc)(const position_values_t* positionValues, void* opaque);
462 typedef void (ASDK_CALL *BandwidthStatisticsFunc)(const bandwidth_statistics_simple_t *bandwidthStatistics, void* opaque);
463 typedef void (ASDK_CALL *RoomPreviewImageFunc)(const uint32_t roomID, const uint64_t utc,
464 const ImageFormat imageFormat,
465 const uint8_t *data, const uint32_t size,
466 void* opaque);
467
468#ifdef ASDK_SAFE_ALIAS
469 #pragma pack(4)
470#endif
471
486
487 typedef struct sdk_t {
488 typedef void (ASDK_CALL *VersionProc)(uint8_t *versionMajor,
489 uint8_t *versionMinor,
490 uint8_t *versionPath);
493 char* errorStr;
494 Status status;
495
500
501 Status Unload() {
502 if (_unload_) {
503 hsdk libraryHandle = library;
504 _unload_(this);
505
506 if (libraryHandle)
507 ASDK_FreeLib(libraryHandle);
508
509 return StatusOK;
510 }
511 return StatusErrorHandle;
512 }
513
527 // Unsecured connection is not supported for 4.0, TBD for 4.1+
528 Status Connect(const char* ip, const uint16_t port,
529 const uint32_t timeout, const bool highLatency,
530 const char *username, const char *password,
531 const UserCapabilityValue userCapability,
532 const DeviceCapabilityValue deviceCapability,
533 const char *displayName = nullptr) {
534 if (_connect_)
535 return _connect_(this, ip, port, timeout, highLatency, username,
536 password, userCapability, deviceCapability,
537 displayName);
538 return StatusErrorHandle;
539 }
540
554
555 Status ConnectSecured(const char* ip, const uint16_t port,
556 const uint32_t timeout, const bool highLatency,
557 const char *username, const char* password,
558 const UserCapabilityValue userCapability,
559 const DeviceCapabilityValue deviceCapability,
560 const char *certificate,
561 const char *displayName = nullptr) {
562 if (_connect_secured_)
563 return _connect_secured_(this, ip, port, timeout, highLatency, username,
564 password, userCapability, deviceCapability,
565 certificate, displayName);
566 return StatusErrorHandle;
567 }
568
581
582 Status RequestCertificate(const char* address, const uint16_t port,
583 const char* userName, const char *password,
584 CertificateState* certificateStateOut,
585 certificate_t* certificateOut,
586 const int timeout = 3000) {
587 if (_request_certificate_)
588 return _request_certificate_(this, address, port, userName, password,
589 certificateStateOut,
590 certificateOut, timeout);
591 return StatusErrorHandle;
592 }
593
599
600 Status CachedCertificate(certificate_t* certificateOut) {
601 if (_cached_certificate_)
602 return _cached_certificate_(this, certificateOut);
603
604 return StatusErrorHandle;
605 }
606
611
612 Status Disconnect() {
613 if (_disconnect_)
614 return _disconnect_(this);
615 return StatusErrorHandle;
616 }
617
623
624 Status SendRequest(const Request request) {
625 if (_send_request_)
626 return _send_request_(this, request);
627 return StatusErrorHandle;
628 }
629
637
638 Status SendRequestStr(const Request request, const char* str,
639 const char *option = nullptr) {
640 if (_send_request_string_)
641 return _send_request_string_(this, request, str, option);
642 return StatusErrorHandle;
643 }
644
649
650 inline void SetServerStateCallback(ServerStateFunc func, void *opaque = nullptr) {
651 if (_cb_server_state_)
652 _cb_server_state_(this, func, opaque);
653 }
654
659
660 inline void SetRoomAnnounceCallback(RoomAnnounceFunc func, void* opaque = nullptr) {
661 if (_cb_room_announce_)
662 _cb_room_announce_(this, func, opaque);
663 }
664
669
670 inline void SetRoomResponseCallback(RoomResponseFunc func, void* opaque = nullptr) {
671 if (_cb_room_response_)
672 _cb_room_response_(this, func, opaque);
673 }
674
679
680 inline void SetRoomClientAddedCallback(RoomClientAddedFunc func, void* opaque = nullptr) {
681 if (_cb_room_client_added_)
682 _cb_room_client_added_(this, func, opaque);
683 }
684
689
690 inline void SetRoomClientRemovedCallback(RoomClientRemovedFunc func, void* opaque = nullptr) {
691 if (_cb_room_client_removed_)
692 _cb_room_client_removed_(this, func, opaque);
693 }
694
699
700 inline void SetAuthenticateResponseCallback(AuthenticateResponseFunc func, void* opaque = nullptr) {
701 if (_cb_authenticate_response_)
702 _cb_authenticate_response_(this, func, opaque);
703 }
704
709
710 inline void SetFrameCallback(FrameFunc func, void* opaque = nullptr) {
711 if (_cb_frame_)
712 _cb_frame_(this, func, opaque);
713 }
714
719
720 inline void SetEncodedStreamCallback(EncodedStreamFunc func, void* opaque = nullptr) {
721 if (_cb_encoded_stream_)
722 _cb_encoded_stream_(this, func, opaque);
723 }
724
729
730 inline void SetEncodedAudioFrameCallback(EncodedAudioFrameFunc func, void* opaque = nullptr) {
731 if (_cb_encoded_audio_frame_)
732 _cb_encoded_audio_frame_(this, func, opaque);
733 }
734
739
740 inline void SetVideoOptionsCallback(VideoOptionsFunc func, void* opaque = nullptr) {
741 if (_cb_video_options_)
742 _cb_video_options_(this, func, opaque);
743 }
744
749
750 inline void SetVideoModeCallback(VideoModeFunc func, void* opaque = nullptr) {
751 if (_cb_video_mode_)
752 _cb_video_mode_(this, func, opaque);
753 }
754
759
760 inline void SetPositionValuesCallback(PositionValuesFunc func, void* opaque = nullptr) {
761 if (_cb_position_values_)
762 _cb_position_values_(this, func, opaque);
763 }
764
769
770 inline void SetBandwidthStatisticsCallback(BandwidthStatisticsFunc func, void* opaque = nullptr) {
771 if (_cb_bandwidth_statistics_)
772 _cb_bandwidth_statistics_(this, func, opaque);
773 }
774
779
780 inline void SetRoomPreviewImageCallback(RoomPreviewImageFunc func, void* opaque = nullptr) {
781 if (_cb_room_preview_image_)
782 _cb_room_preview_image_(this, func, opaque);
783 }
784
785 // SDK Internal
787 VersionProc version;
788 void (ASDK_CALL *_unload_)(sdk_t* sdk);
789 Status (ASDK_CALL *_connect_)(sdk_t* sdk, const char* ip, const uint16_t port,
790 const uint32_t timeout, const bool highLatency,
791 const char* username, const char* password,
792 const UserCapabilityValue userCapability,
793 const DeviceCapabilityValue deviceCapability,
794 const char *displayName);
795 Status (ASDK_CALL *_connect_secured_)(sdk_t* sdk, const char* ip, const uint16_t port,
796 const uint32_t timeout, const bool highLatency,
797 const char* username, const char* password,
798 const UserCapabilityValue userCapability,
799 const DeviceCapabilityValue deviceCapability,
800 const char *certificate,
801 const char* displayName);
802 Status (ASDK_CALL *_request_certificate_)(sdk_t* sdk, const char* address, const uint16_t port,
803 const char* userName, const char* password,
804 CertificateState* certificateStateOut,
805 certificate_t* certificateOut, const int timeout);
806 Status (ASDK_CALL *_cached_certificate_)(sdk_t* sdk, certificate_t* certificateOut);
807 Status (ASDK_CALL *_disconnect_)(sdk_t* sdk);
808 Status (ASDK_CALL *_send_request_)(sdk_t* sdk, const Request request);
809 Status (ASDK_CALL *_send_request_string_)(sdk_t* sdk, const Request request,
810 const char* str, const char *option);
811
812 void (ASDK_CALL *_cb_server_state_)(sdk_t* sdk, ServerStateFunc func, void* opaque);
813 void (ASDK_CALL *_cb_room_announce_)(sdk_t* sdk, RoomAnnounceFunc func, void* opaque);
814 void (ASDK_CALL *_cb_room_response_)(sdk_t* sdk, RoomResponseFunc func, void* opaque);
815 void (ASDK_CALL *_cb_room_client_added_)(sdk_t* sdk, RoomClientAddedFunc func, void* opaque);
816 void (ASDK_CALL *_cb_room_client_removed_)(sdk_t* sdk, RoomClientRemovedFunc func, void* opaque);
817 void (ASDK_CALL *_cb_authenticate_response_)(sdk_t* sdk, AuthenticateResponseFunc func, void* opaque);
818 void (ASDK_CALL *_cb_frame_)(sdk_t* sdk, FrameFunc func, void* opaque);
819 void (ASDK_CALL *_cb_encoded_stream_)(sdk_t* sdk, EncodedStreamFunc func, void* opaque);
820 void (ASDK_CALL *_cb_encoded_audio_frame_)(sdk_t* sdk, EncodedAudioFrameFunc func, void* opaque);
821 void (ASDK_CALL *_cb_video_options_)(sdk_t* sdk, VideoOptionsFunc func, void* opaque);
822 void (ASDK_CALL *_cb_video_mode_)(sdk_t* sdk, VideoModeFunc func, void* opaque);
823 void (ASDK_CALL *_cb_position_values_)(sdk_t* sdk, PositionValuesFunc func, void* opaque);
824 void (ASDK_CALL *_cb_bandwidth_statistics_)(sdk_t* sdk, BandwidthStatisticsFunc func, void* opaque);
825 void (ASDK_CALL *_cb_room_preview_image_)(sdk_t* sdk, RoomPreviewImageFunc func, void* opaque);
828
829#ifdef ASDK_SAFE_ALIAS
830 #pragma pack()
831#endif
832
833 inline sdk_t* Initialize() {
834 typedef sdk_t* (ASDK_CALL *InitProc)(void);
835 sdk_t* self = nullptr;
836#ifdef ASDK_WINDOWS
837 const char *library = "asmirasdk.dll";
838#else
839 const char *library = "asmirasdk.so";
840#endif
841 hsdk asdk = ASDK_LoadLib(library);
842 if (asdk) {
843 sdk_t::VersionProc funcVersion = (sdk_t::VersionProc)ASDK_GetProc(asdk, "ASDKVersion");
844 InitProc funcInit = (InitProc)ASDK_GetProc(asdk, "ASDKInitializeLibrary");
845 if (funcInit && funcVersion) {
846 uint8_t versionMajor = 0;
847 uint8_t versionMinor = 0;
848 uint8_t versionPatch = 0;
849 funcVersion(&versionMajor, &versionMinor, &versionPatch);
850 if (VERSION_MAJOR == versionMajor) {
851 if (VERSION_MINOR != versionMinor)
852 printf("Version mismatch warning\n");
853
854 self = funcInit();
855 if (self) {
856 self->library = asdk;
857 self->version = funcVersion;
858 }
859 else {
860 puts("Error occurred while initializing ASMIRA SDK");
861 ASDK_FreeLib(asdk);
862 asdk = nullptr;
863 }
864 }
865 else {
866 puts("Version error");
867 ASDK_FreeLib(asdk);
868 asdk = nullptr;
869 }
870 }
871 else {
872 puts("Failed to locate initialize proc");
873 ASDK_FreeLib(asdk);
874 asdk = nullptr;
875 }
876 }
877 else {
878#ifdef ASDK_WINDOWS
879#else
880 char* err = dlerror();
881 if (err) {
882 printf("Failed to open: \"%s\" Reason: \"%s\"\n", library, err);
883 }
884#endif
885 }
886 return self;
887 }
888}
889
893
897
898#endif
@ RequestRoomJoin
Definition asmirasdk.h:129
@ RequestRoomListUnsubscribe
Definition asmirasdk.h:128
@ RequestUndef
Definition asmirasdk.h:126
@ RequestRoomLeave
Definition asmirasdk.h:130
@ RequestRoomListSubscribe
Definition asmirasdk.h:127
void(ASDK_CALL * PositionValuesFunc)(const position_values_t *positionValues, void *opaque)
Definition asmirasdk.h:461
int DeviceCapabilityValue
Definition asmirasdk.h:235
CertificateState
Definition asmirasdk.h:426
@ CertificateStateConnectError
Definition asmirasdk.h:430
@ CertificateStateUndef
Definition asmirasdk.h:427
@ CertificateStateReceived
Definition asmirasdk.h:429
@ CertificateStateConnected
Definition asmirasdk.h:428
struct asdk::sdk_t sdk_t
RoomState
Definition asmirasdk.h:153
@ RoomStateUndef
Definition asmirasdk.h:154
@ RoomStatePassword
Definition asmirasdk.h:155
@ RoomStatePreview
Definition asmirasdk.h:156
void(ASDK_CALL * EncodedAudioFrameFunc)(const uint16_t srcID, const unsigned int timeStamp, const asdk::AudioFrameStateValue state, const unsigned char *audioEncoded, const size_t audioEncodedSize, void *opaque)
Definition asmirasdk.h:455
uint32_t RoomStateValue
Definition asmirasdk.h:158
void(ASDK_CALL * RoomResponseFunc)(const Request request, const RoomResponse response, const void *optionalData, const uint32_t optionalDataSize, void *opaque)
Definition asmirasdk.h:447
std::vector< std::pair< TimePoint, unsigned int > > m_streamStats
Definition asmirasdk.h:424
TimePointSteady TimeNowSteady()
Definition asmirasdk.h:416
@ StatusErrorImageModule
Definition asmirasdk.h:85
@ StatusErrorConnect
Definition asmirasdk.h:87
@ StatusErrorTransmit
Definition asmirasdk.h:88
@ StatusError
Definition asmirasdk.h:82
@ StatusErrorVideoModule
Definition asmirasdk.h:84
@ StatusOK
Definition asmirasdk.h:80
@ StatusDisconnected
Definition asmirasdk.h:81
@ StatusErrorInitialized
Definition asmirasdk.h:86
@ StatusUndef
Definition asmirasdk.h:79
@ StatusErrorHandle
Definition asmirasdk.h:83
std::chrono::steady_clock::time_point TimePointSteady
Definition asmirasdk.h:415
void * hsdk
Definition asmirasdk.h:71
void(ASDK_CALL * RoomPreviewImageFunc)(const uint32_t roomID, const uint64_t utc, const ImageFormat imageFormat, const uint8_t *data, const uint32_t size, void *opaque)
Definition asmirasdk.h:463
@ RoomFlagChatViewers
Definition asmirasdk.h:145
@ RoomFlagChatGuests
Definition asmirasdk.h:144
@ RoomFlagUndef
Definition asmirasdk.h:142
@ RoomFlagAudioViewers
Definition asmirasdk.h:148
@ RoomFlagAudioSenders
Definition asmirasdk.h:149
@ RoomFlagAudioGuests
Definition asmirasdk.h:147
@ RoomFlagChatSenders
Definition asmirasdk.h:146
@ RoomFlagIsPublic
Definition asmirasdk.h:143
void(ASDK_CALL * FrameFunc)(const frame_t *frame, void *opaque)
Definition asmirasdk.h:453
struct asdk::position_klv_values_t position_klv_values_t
uint8_t AudioFrameStateValue
Definition asmirasdk.h:252
std::chrono::high_resolution_clock::time_point TimePoint
Definition asmirasdk.h:405
UserCapability
Definition asmirasdk.h:187
@ UserCapabilitySender
Definition asmirasdk.h:190
@ UserCapabilityController
Definition asmirasdk.h:191
@ UserCapabilityUnsure
Definition asmirasdk.h:195
@ UserCapabilityGuest
Definition asmirasdk.h:193
@ UserCapabilityUndef
Definition asmirasdk.h:188
@ UserCapabilitySuper
Definition asmirasdk.h:194
@ UserCapabilityViewer
Definition asmirasdk.h:192
void(ASDK_CALL * ServerStateFunc)(const ServerState serverState, void *opaque)
Definition asmirasdk.h:443
uint32_t RoomFlagValue
Definition asmirasdk.h:151
long long TimeSpentSteady(const TimePointSteady &time)
Definition asmirasdk.h:420
struct asdk::bandwidth_statistics_t bandwidth_statistics_t
void(ASDK_CALL * VideoOptionsFunc)(const video_options_t *videoOptions, void *opaque)
Definition asmirasdk.h:459
AuthenticationResponse
Definition asmirasdk.h:101
@ AuthenticationResponseKickedOther
Definition asmirasdk.h:113
@ AuthenticationResponseSuccess
Definition asmirasdk.h:103
@ AuthenticationResponseVersionRecUpgrade
Definition asmirasdk.h:107
@ AuthenticationResponseLoggedInOther
Definition asmirasdk.h:111
@ AuthenticationResponseUndef
Definition asmirasdk.h:102
@ AuthenticationResponseWrongLoginType
Definition asmirasdk.h:115
@ AuthenticationResponseFormatError
Definition asmirasdk.h:119
@ AuthenticationResponseVersionError
Definition asmirasdk.h:105
@ AuthenticationResponseVersionMayUpgrade
Definition asmirasdk.h:109
@ AuthenticationResponseTryAgainLater
Definition asmirasdk.h:117
@ AuthenticationResponseRequestedCapError
Definition asmirasdk.h:121
@ AuthenticationResponseError
Definition asmirasdk.h:104
void(ASDK_CALL * AuthenticateResponseFunc)(const AuthenticationResponse authenticateResponse, void *opaque)
Definition asmirasdk.h:452
ServerState
Definition asmirasdk.h:92
@ ServerStateDisconnected
Definition asmirasdk.h:94
@ ServerStateAuthenticateError
Definition asmirasdk.h:97
@ ServerStateConnectedAndAuthenticated
Definition asmirasdk.h:96
@ ServerStateUndef
Definition asmirasdk.h:93
@ ServerStateConnected
Definition asmirasdk.h:95
RoomResponse
Definition asmirasdk.h:133
@ RoomResponseUndef
Definition asmirasdk.h:134
@ RoomResponseError
Definition asmirasdk.h:136
@ RoomResponseErrorAlreadyJoined
Definition asmirasdk.h:137
@ RoomResponseSuccess
Definition asmirasdk.h:135
@ RoomResponseErrorUnhandled
Definition asmirasdk.h:138
long long TimeSpent(const TimePoint &timeStart)
Definition asmirasdk.h:411
TimePoint TimeNow()
Definition asmirasdk.h:408
struct asdk::position_values_t position_values_t
void(ASDK_CALL * EncodedStreamFunc)(const StreamType type, const void *data, const uint32_t dataSize, void *opaque)
Definition asmirasdk.h:454
struct asdk::certificate_t certificate_t
void(ASDK_CALL * RoomClientRemovedFunc)(const uint32_t clientID, void *opaque)
Definition asmirasdk.h:451
ImageFormat
Definition asmirasdk.h:177
@ ImageFormatJPEG
Definition asmirasdk.h:179
@ ImageFormatAV1
Definition asmirasdk.h:183
@ ImageFormatWEBP
Definition asmirasdk.h:180
@ ImageFormatUndef
Definition asmirasdk.h:178
@ ImageFormatHEIF
Definition asmirasdk.h:181
@ ImageFormatAVIF
Definition asmirasdk.h:182
DeviceCapability
Definition asmirasdk.h:199
@ DeviceCapabilityFull
Definition asmirasdk.h:228
@ DeviceCapabilityASIGN
Definition asmirasdk.h:217
@ DeviceCapabilityVideoH264
Definition asmirasdk.h:202
@ DeviceCapabilityAudioOpus
Definition asmirasdk.h:204
@ DeviceCapabilityUndef
Definition asmirasdk.h:200
@ DeviceCapabilityVideoROI
Definition asmirasdk.h:211
@ DeviceCapabilityVideoH265
Definition asmirasdk.h:203
@ DeviceCapabilityPhotoModeWEBP
Definition asmirasdk.h:207
@ DeviceCapabilityDisplay
Definition asmirasdk.h:213
@ DeviceCapabilityHeadless
Definition asmirasdk.h:231
@ DeviceCapabilityPhotoModeAVIF
Definition asmirasdk.h:209
@ DeviceCapabilityBasic
Definition asmirasdk.h:219
@ DeviceCapabilityPhotoROI
Definition asmirasdk.h:210
@ DeviceCapabilityChat
Definition asmirasdk.h:212
@ DeviceCapabilityVideoAV1
Definition asmirasdk.h:201
@ DeviceCapabilityAudioSpeex
Definition asmirasdk.h:205
@ DeviceCapabilityPhotoModeHEIF
Definition asmirasdk.h:208
@ DeviceCapabilityAudioMIC
Definition asmirasdk.h:206
@ DeviceCapabilityCore
Definition asmirasdk.h:225
void(ASDK_CALL * RoomClientAddedFunc)(const uint32_t clientID, const char *userName, const UserCapabilityValue userCapability, const DeviceCapabilityValue deviceCapability, void *opaque)
Definition asmirasdk.h:449
uint8_t UserCapabilityValue
Definition asmirasdk.h:197
PositionSource
Definition asmirasdk.h:161
@ PositionSourceUndefined
Definition asmirasdk.h:162
@ PositionSourceKLV
Definition asmirasdk.h:164
@ PositionSourceNMEA
Definition asmirasdk.h:163
void(ASDK_CALL * VideoModeFunc)(const video_mode_t *videoMode, void *opaque)
Definition asmirasdk.h:460
struct asdk::position_nmea_values_t position_nmea_values_t
StreamType
Definition asmirasdk.h:168
@ StreamTypeAV1Frame
Definition asmirasdk.h:172
@ StreamTypeWEBP
Definition asmirasdk.h:174
@ StreamType264Frame
Definition asmirasdk.h:170
@ StreamTypeUnknown
Definition asmirasdk.h:169
@ StreamType265Frame
Definition asmirasdk.h:171
@ StreamTypeMPEGTS
Definition asmirasdk.h:173
void(ASDK_CALL * RoomAnnounceFunc)(const char *roomName, const uint32_t roomID, const asdk::RoomStateValue state, const asdk::RoomFlagValue flags, void *opaque)
Definition asmirasdk.h:444
void(ASDK_CALL * BandwidthStatisticsFunc)(const bandwidth_statistics_simple_t *bandwidthStatistics, void *opaque)
Definition asmirasdk.h:462
std::chrono::milliseconds TimeMS
Definition asmirasdk.h:406
sdk_t * Initialize()
Definition asmirasdk.h:833
AudioFrameState
Definition asmirasdk.h:237
@ AudioFrameStateRES1
Definition asmirasdk.h:248
@ AudioFrameStateQM1
Definition asmirasdk.h:242
@ AudioFrameStateRES3
Definition asmirasdk.h:250
@ AudioFrameStateRES2
Definition asmirasdk.h:249
@ AudioFrameStateUndef
Definition asmirasdk.h:238
@ AudioFrameStateQM2
Definition asmirasdk.h:243
@ AudioFrameStateStart
Definition asmirasdk.h:240
@ AudioFrameStateQM5
Definition asmirasdk.h:246
@ AudioFrameStateQM4
Definition asmirasdk.h:245
@ AudioFrameStateQM3
Definition asmirasdk.h:244
unsigned int packetsSentReceived
Definition asmirasdk.h:389
unsigned int rtcpPacketLostSize
Definition asmirasdk.h:395
unsigned int rtcpPacketLostCount
Definition asmirasdk.h:394
const char * data
Definition asmirasdk.h:435
int32_t height
Definition asmirasdk.h:274
uint32_t timeStamp
Definition asmirasdk.h:276
uint8_t * data
Definition asmirasdk.h:278
uint64_t utc
Definition asmirasdk.h:277
int32_t width
Definition asmirasdk.h:273
int32_t size
Definition asmirasdk.h:275
position_klv_values_t * klvValues
Definition asmirasdk.h:381
PositionSource positionSource
Definition asmirasdk.h:380
position_nmea_values_t * nmeaValues
Definition asmirasdk.h:382
SDK Core.
Definition asmirasdk.h:487
Status CachedCertificate(certificate_t *certificateOut)
Get cached certificate from ASMIRA server.
Definition asmirasdk.h:600
void SetEncodedStreamCallback(EncodedStreamFunc func, void *opaque=nullptr)
Encoded Frame or stream callback.
Definition asmirasdk.h:720
void SetRoomClientRemovedCallback(RoomClientRemovedFunc func, void *opaque=nullptr)
Server room client removed callback.
Definition asmirasdk.h:690
void SetRoomPreviewImageCallback(RoomPreviewImageFunc func, void *opaque=nullptr)
Room Preview Image callback.
Definition asmirasdk.h:780
void(ASDK_CALL * VersionProc)(uint8_t *versionMajor, uint8_t *versionMinor, uint8_t *versionPath)
Definition asmirasdk.h:488
void SetAuthenticateResponseCallback(AuthenticateResponseFunc func, void *opaque=nullptr)
SetAuthenticateResponseCallback callback.
Definition asmirasdk.h:700
Status SendRequestStr(const Request request, const char *str, const char *option=nullptr)
Sends request string to ASMIRA server.
Definition asmirasdk.h:638
void SetVideoModeCallback(VideoModeFunc func, void *opaque=nullptr)
Video Mode callback.
Definition asmirasdk.h:750
void SetEncodedAudioFrameCallback(EncodedAudioFrameFunc func, void *opaque=nullptr)
Encoded Audio Frame callback.
Definition asmirasdk.h:730
void SetFrameCallback(FrameFunc func, void *opaque=nullptr)
Video/Photo Frame callback.
Definition asmirasdk.h:710
void SetServerStateCallback(ServerStateFunc func, void *opaque=nullptr)
Server state callback.
Definition asmirasdk.h:650
void SetRoomResponseCallback(RoomResponseFunc func, void *opaque=nullptr)
Server room response callback.
Definition asmirasdk.h:670
Status Unload()
Unloads SDK library.
Definition asmirasdk.h:501
Status SendRequest(const Request request)
Sends request to ASMIRA server.
Definition asmirasdk.h:624
char * errorStr
Definition asmirasdk.h:493
Status RequestCertificate(const char *address, const uint16_t port, const char *userName, const char *password, CertificateState *certificateStateOut, certificate_t *certificateOut, const int timeout=3000)
Request certificate from ASMIRA server.
Definition asmirasdk.h:582
Status Disconnect()
Disconnects from ASMIRA server.
Definition asmirasdk.h:612
Status ConnectSecured(const char *ip, const uint16_t port, const uint32_t timeout, const bool highLatency, const char *username, const char *password, const UserCapabilityValue userCapability, const DeviceCapabilityValue deviceCapability, const char *certificate, const char *displayName=nullptr)
Connect to ASMIRA server.
Definition asmirasdk.h:555
Status Connect(const char *ip, const uint16_t port, const uint32_t timeout, const bool highLatency, const char *username, const char *password, const UserCapabilityValue userCapability, const DeviceCapabilityValue deviceCapability, const char *displayName=nullptr)
Connect to ASMIRA server.
Definition asmirasdk.h:528
void SetRoomClientAddedCallback(RoomClientAddedFunc func, void *opaque=nullptr)
Server room client added callback.
Definition asmirasdk.h:680
void SetRoomAnnounceCallback(RoomAnnounceFunc func, void *opaque=nullptr)
Server room announce callback.
Definition asmirasdk.h:660
Status status
Definition asmirasdk.h:494
void SetPositionValuesCallback(PositionValuesFunc func, void *opaque=nullptr)
Position Values callback.
Definition asmirasdk.h:760
void SetBandwidthStatisticsCallback(BandwidthStatisticsFunc func, void *opaque=nullptr)
Bandwidth Statistics callback.
Definition asmirasdk.h:770
void SetVideoOptionsCallback(VideoOptionsFunc func, void *opaque=nullptr)
Video Options callback.
Definition asmirasdk.h:740