summaryrefslogtreecommitdiff
path: root/tvapi/android/tvserver/TvService.h (plain)
blob: 3345ccf7d811f5f1b71c44fa7653b20032cb19ea
1#ifndef ANDROID_SERVERS_TV_TVSERVICE_H
2#define ANDROID_SERVERS_TV_TVSERVICE_H
3
4#include <include/ITvService.h>
5#include <include/Tv.h>
6#include <utils/threads.h>
7#include <utils/Vector.h>
8#include <stdint.h>
9#include <tv/CTv.h>
10#include "tv/CTvScreenCapture.h"
11
12using namespace android;
13
14#define DEBUG_HEAP_LEAKS 0
15#define RESOURCE_NUMS 5
16
17class TvService: public BnTvService , public CTv::TvIObserver, public CTvScreenCapture::TvIObserver {
18public:
19 class Client: public BnTv {
20 public:
21 Client(const sp<TvService> &tvService, const sp<ITvClient> &tvClient, pid_t clientPid, CTv *pTv);
22 Client();
23 virtual ~Client();
24 virtual void disconnect();
25 virtual status_t connect(const sp<ITvClient> &client);
26 virtual status_t lock();
27 virtual status_t unlock();
28 virtual status_t processCmd(const Parcel &p, Parcel *r);
29 virtual status_t createSubtitle(const sp<IMemory> &share_mem);
30 virtual status_t createVideoFrame(const sp<IMemory> &share_mem);
31
32 // our client...
33 const sp<ITvClient> &getTvClient() const
34 {
35 return mTvClient;
36 }
37
38 int notifyCallback(const int &msgtype, const Parcel &p);
39 String16 mStrName;
40 static void notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2, void *user);
41 private:
42 friend class CTv;
43 friend class TvService;
44 status_t checkPid();
45 static sp<Client> getClientFromCookie(void *user);
46
47 mutable Mutex mLock;
48 mutable Condition mReady;
49 sp<TvService> mTvService;
50 sp<ITvClient> mTvClient;
51 pid_t mClientPid;
52 int mGetNotifyFlag;
53 int mCurProgIndex;
54 CTv *mpTv;
55 bool mIsStartTv;
56 };//end client
57
58 virtual sp<ITv> connect(const sp<ITvClient> &tvClient);
59
60 virtual void onTvEvent(const CTvEv &ev);
61 void removeClient(const sp<ITvClient> &tvClient);
62
63 Client *mpStartTvClient;
64 wp<Client> mpScannerClient;
65 static void instantiate(CTv *pTv);
66 Vector< wp<Client> > m_v_Clients;
67
68private:
69 TvService(CTv *pTv);
70 virtual ~TvService();
71 virtual status_t onTransact(uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags);
72 volatile int32_t mUsers;
73 virtual void incUsers();
74 virtual void decUsers();
75 mutable Mutex mServiceLock;
76 CTv *mpTv;
77 CTvScreenCapture mCapVidFrame;
78
79};
80
81#endif
82