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