5 // Wrapper around utils/ardrone_ftp.c functions
7 // Created by Nicolas BRULEZ on 07/04/11.
8 // Copyright 2011 Parrot. All rights reserved.
11 #import <Foundation/Foundation.h>
13 typedef enum ARDFTP_RESULT_e {
24 typedef enum FTP_OPERATION_e {
34 * ARDFTP_FAILED is not "return !ARDFTP_SUCCEEDED (result);" because ARDFTP_PROGRESS is not a success
39 static inline bool ARDFTP_SUCCEEDED (ARDFTP_RESULT result)
41 return (ARDFTP_SAMESIZE == result ||
42 ARDFTP_SUCCESS == result) ?
46 static inline bool ARDFTP_FAILED (ARDFTP_RESULT result)
48 return (ARDFTP_FAIL == result ||
49 ARDFTP_BUSY == result ||
50 ARDFTP_TIMEOUT == result ||
51 ARDFTP_BADSIZE == result ||
52 ARDFTP_ABORT == result) ?
56 @interface ARDroneFTPCallbackArg : NSObject {
58 float progress; // Zero if status is not "ARDFTP_PROGRESS"
59 NSString *fileList; // nil if operation is not "FTP_LIST" and status is not "ARDFTP_SUCCESS"
60 FTP_OPERATION operation;
62 @property (readonly) ARDFTP_RESULT status;
63 @property (readonly) float progress;
64 @property (readonly) FTP_OPERATION operation;
65 @property (nonatomic, readonly) NSString *fileList;
67 - (id)initWithStatus:(ARDFTP_RESULT)_status withProgress:(float)_progress withFileList:(char *)_fileList withOperation:(FTP_OPERATION)_operation;
71 @interface ARDroneFTP : NSObject {
75 SEL currentOpCallback;
77 FTP_OPERATION currentOperation;
79 @property (readonly) FTP_OPERATION currentOperation;
80 @property (readonly) SEL currentOpCallback;
81 @property (readonly) id delegate;
82 @property (readwrite) BOOL isBusy;
84 /* Instanciations of common FTP for AR.Drone */
85 + (id) anonymousUpdateFTPwithDelegate:(id)_delegate withDefaultCallback:(SEL)_callback;
86 + (id) updateFTPwithUser:(NSString *)user withPassword:(NSString *)password withDelegate:(id)_delegate withDefaultCallback:(SEL)_callback;
87 + (id) anonymousStandardFTPwithDelegate:(id)_delegate withDefaultCallback:(SEL)_callback;
88 + (id) standardFTPwithUser:(NSString *)user withPassword:(NSString *)password withDelegate:(id)_delegate withDefaultCallback:(SEL)_callback;
91 - (id)initAnonymousWithIP:(NSString *)ip withPort:(int)port withDelegate:(id)_delegate withDefaultCallback:(SEL)_callback;
92 - (id)initWithIP:(NSString *)ip withPort:(int)port withUser:(NSString *)user withPassword:(NSString *)password withDelegate:(id)_delegate withDefaultCallback:(SEL)_callback;
93 /* Change delegate/callback */
94 - (void)setDelegate:(id)_delegate;
95 - (void)setDefaultCallback:(SEL)_callback;
99 /* Dummy command to keep ftp connexion alive ... return NO if connexion was closed by server */
100 - (bool)keepConnexionAlive;
102 /* NOTE : Default callback refers to the callback defined in init... or setDefaultCallback functions */
105 - (ARDFTP_RESULT)sendLocalFile:(NSString *)local toDistantFile:(NSString *)distant withResume:(BOOL)resume; // Default callback
106 - (ARDFTP_RESULT)sendLocalFile:(NSString *)local toDistantFile:(NSString *)distant withResume:(BOOL)resume withCallback:(SEL)_callback; // Specified callback
107 - (ARDFTP_RESULT)sendSynchronouslyLocalFile:(NSString *)local toDistantFile:(NSString *)distant withResume:(BOOL)resume; // Blocking call until completion
109 - (ARDFTP_RESULT)getDistantFile:(NSString *)distant toLocalFile:(NSString *)local withResume:(BOOL)resume; // Default callback
110 - (ARDFTP_RESULT)getDistantFile:(NSString *)distant toLocalFile:(NSString *)local withResume:(BOOL)resume withCallback:(SEL)_callback; // Specified callback
111 - (ARDFTP_RESULT)getSynchronouslyDistantFile:(NSString *)distant toLocalFile:(NSString *)local withResume:(BOOL)resume; // Blocking call until completion
112 /* List current directory */
113 - (ARDFTP_RESULT)listCurrentDirectory; // Default callback
114 - (ARDFTP_RESULT)listCurrentDirectoryWithCallback:(SEL)_callback; // Specified callback
115 - (ARDFTP_RESULT)listCurrentDirectoryIn:(NSString **)result; // Blocking call, result is set in *result
118 - (ARDFTP_RESULT)removeDistantFile:(NSString *)distant;
119 /* Rename file/directory (Both functions are the same) */
120 - (ARDFTP_RESULT)renameDistantFileFrom:(NSString *)origin to:(NSString *)dest;
121 - (ARDFTP_RESULT)renameDistantDirectoryFrom:(NSString *)origin to:(NSString *)dest;
122 /* Change working directory */
123 - (ARDFTP_RESULT)changeDirectoryTo:(NSString *)nextDir;
124 /* Get working directory */
125 - (ARDFTP_RESULT)getWorkingDirectoryTo:(NSString **)result;
126 /* Create directory */
127 - (ARDFTP_RESULT)createDirectoryNamed:(NSString *)dirName;
128 /* Remove directory */
129 - (ARDFTP_RESULT)removeDirectoryNamed:(NSString *)dirName;
131 /* Abort current operation */
132 - (ARDFTP_RESULT)abortCurrentOperation;
134 /* Check if instance is available */