00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef C_LBSLOCINFOCONVERSIONHANDLER_H_
00018 #define C_LBSLOCINFOCONVERSIONHANDLER_H_
00019
00020 #include <e32base.h>
00021
00022
00023 class RLbsLocInfoConverter;
00024 class CLbsLocationInfo;
00025
00030 class CLbsLocInfoConversionHandler : public CActive
00031 {
00032 public:
00033 enum TAyncRequestType
00034 {
00035 EGetBuffersizeForSingleArea,
00036
00037 EGetSingleConvertedArea,
00038
00039 EGetBuffersizeForMultipleArea,
00040
00041 EGetMultipleConvertedArea
00042 };
00043 public:
00047 static CLbsLocInfoConversionHandler* NewL( RLbsLocInfoConverter& aLocInfoConverter );
00048
00052 ~CLbsLocInfoConversionHandler();
00053
00057 void Start( TAyncRequestType aType);
00058
00062 void SetBuffer( CBufFlat* aBuffer );
00063
00067 void SetStatus( TRequestStatus& aStatus );
00068
00072 void SetClientRequestedInfo( TLbsConversionOutputInfoMask aRequestedInfo );
00073
00077 void SetClientLocationInfoArray( RLbsLocationInfoBaseArray*
00078 aLocationInfoArray );
00079
00083 void SetClientLocationInfo( CLbsLocationInfoBase& aLocationInfo );
00084
00088 void ReleaseAllResources();
00089
00090
00091 protected:
00092 void RunL();
00093 void DoCancel();
00094
00095 private:
00096 CLbsLocInfoConversionHandler( RLbsLocInfoConverter& aLocInfoConverter );
00097
00098 void ConstructL();
00099
00100 void HandleSingleConversionL();
00101
00102
00103 void HandleMultipleConversionL();
00104
00105 void GetPositionInfoArrayL( RBufReadStream& readStream,
00106 CLbsLocationInfo& aDesLocationInfo );
00107
00108 void GetGsmCellInfoArrayL( RBufReadStream& readStream,
00109 CLbsLocationInfo& aDesLocationInfo);
00110
00111 void GetWcdmaCellInfoArrayL( RBufReadStream& readStream,
00112 CLbsLocationInfo& aDesLocationInfo );
00113
00114 void GetWlanInfoArrayL( RBufReadStream& readStream,
00115 CLbsLocationInfo& aDesLocationInfo );
00116
00117
00118 private:
00122 RLbsLocInfoConverter& iLocInfoConverter;
00123
00127 CBufFlat* iBuffer;
00128
00132 TRequestStatus* iClientStatus;
00133
00138 RLbsLocationInfoBaseArray* iClientLocationInfoList;
00139
00143 CLbsLocationInfoBase* iClientLocationInfo;
00144
00148 TLbsConversionOutputInfoMask iRequestedInfo;
00149
00153 TAyncRequestType iRequestType;
00154 };
00155
00156 #endif