File indexing completed on 2024-05-12 16:25:01
0001 /* 0002 * SPDX-FileCopyrightText: 2014 YANG Qiao <yangqiao0505@me.com> 0003 * 2020 Weixuan Xiao <veyx.shaw@gmail.com> 0004 * 2021 Lucas Wang <lucas.wang@tuta.io> 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0007 */ 0008 0009 // Original header below: 0010 //Copyright 27/4/14 YANG Qiao yangqiao0505@me.com 0011 //kdeconnect is distributed under two licenses. 0012 // 0013 //* The Mozilla Public License (MPL) v2.0 0014 // 0015 //or 0016 // 0017 //* The General Public License (GPL) v2.1 0018 // 0019 //---------------------------------------------------------------------- 0020 // 0021 //Software distributed under these licenses is distributed on an "AS 0022 //IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or 0023 //implied. See the License for the specific language governing rights 0024 //and limitations under the License. 0025 //kdeconnect is distributed under both the GPL and the MPL. The MPL 0026 //notice, reproduced below, covers the use of either of the licenses. 0027 // 0028 //--------------------------------------------------------------------- 0029 0030 #import <Foundation/Foundation.h> 0031 0032 #pragma mark Package related macro 0033 0034 #define UDPBROADCAST_TAG -3 0035 #define TCPSERVER_TAG -2 0036 0037 #define PACKAGE_TAG_PAYLOAD -1 0038 #define PACKAGE_TAG_NORMAL 0 0039 #define PACKAGE_TAG_IDENTITY 1 0040 #define PACKAGE_TAG_ENCRYPTED 2 0041 #define PACKAGE_TAG_PAIR 3 0042 #define PACKAGE_TAG_UNPAIR 4 0043 #define PACKAGE_TAG_PING 5 0044 #define PACKAGE_TAG_MPRIS 6 0045 #define PACKAGE_TAG_SHARE 7 0046 #define PACKAGE_TAG_CLIPBOARD 8 0047 #define PACKAGE_TAG_MOUSEPAD 9 0048 #define PACKAGE_TAG_BATTERY 10 0049 #define PACKAGE_TAG_CALENDAR 11 0050 // #define PACKAGE_TAG_REMINDER 12 0051 #define PACKAGE_TAG_CONTACT 13 0052 0053 #define UDP_PORT 1716 0054 #define PORT 1716 /* Fallback */ 0055 #define MIN_TCP_PORT 1716 0056 #define MAX_TCP_PORT 1764 0057 #define ProtocolVersion 7 0058 0059 #pragma mark - Package Types 0060 0061 NS_ASSUME_NONNULL_BEGIN 0062 0063 typedef NSString *NetworkPackageType NS_TYPED_ENUM NS_SWIFT_NAME(NetworkPackage.Type); 0064 0065 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeIdentity; 0066 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeEncrypted; 0067 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypePair; 0068 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypePing; 0069 0070 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeMPRIS; 0071 0072 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeShare; 0073 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeShareRequestUpdate; 0074 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeShareInternal; 0075 0076 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeClipboard; 0077 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeClipboardConnect; 0078 0079 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeBattery; 0080 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeCalendar; 0081 // FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeReminder; 0082 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeContact; 0083 0084 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeBatteryRequest; 0085 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeFindMyPhoneRequest; 0086 0087 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeMousePadRequest; 0088 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeMousePadKeyboardState; 0089 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeMousePadEcho; 0090 0091 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypePresenter; 0092 0093 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeRunCommandRequest; 0094 FOUNDATION_EXPORT NetworkPackageType const NetworkPackageTypeRunCommand; 0095 0096 #pragma mark - 0097 0098 @interface NetworkPackage : NSObject 0099 0100 @property(nonatomic) NSNumber *_Id; 0101 @property(nonatomic) NetworkPackageType type; 0102 @property(nonatomic) NSMutableDictionary<NSString *, id> *_Body; 0103 @property(nonatomic, nullable) NSURL *payloadPath; 0104 @property(nonatomic, nullable) NSDictionary<NSString *, id> *payloadTransferInfo; 0105 @property(nonatomic) long _PayloadSize; 0106 0107 - (NetworkPackage *) initWithType:(NetworkPackageType)type; 0108 + (NetworkPackage *)createIdentityPackageWithTCPPort:(uint16_t)tcpPort; 0109 + (NetworkPackage *) createPairPackage; 0110 + (nullable NSString *) getUUID; 0111 0112 - (BOOL)bodyHasKey:(nonnull NSString *)key; 0113 - (void)setBool:(BOOL)value forKey:(NSString *)key; 0114 - (void)setFloat:(float)value forKey:(NSString *)key; 0115 - (void)setDouble:(double)value forKey:(NSString *)key; 0116 - (void)setInteger:(NSInteger)value forKey:(NSString *)key; 0117 - (void)setObject:(id)value forKey:(NSString *)key; 0118 - (BOOL)boolForKey:(NSString *)key; 0119 - (float)floatForKey:(NSString *)key; 0120 - (double)doubleForKey:(NSString *)key; 0121 - (NSInteger)integerForKey:(NSString *)key; 0122 - (nullable id)objectForKey:(NSString *)key; 0123 0124 #pragma mark Serialize 0125 - (nullable NSData *) serialize; 0126 + (nullable NetworkPackage *) unserialize:(NSData *)data; 0127 0128 @end 0129 0130 NS_ASSUME_NONNULL_END