Package phones ::
Module com_motov710m
|
|
1
2
3
4
5
6
7
8
9
10 """Communicate with Motorola phones using AT commands"""
11
12 import time
13
14
15 import bp_obex
16 import common
17 import com_motov710
18 import p_motov710
19 import helpids
20
21 parentphone=com_motov710.Phone
23 """ Talk to a Motorola V710 phone"""
24 desc='Moto-V710m'
25 helpid=helpids.ID_PHONE_MOTOV710M
26 protocolclass=p_motov710
27 serialsname='motov710m'
28 MODEOBEX='modeobex'
29
30 - def __init__(self, logtarget, commport):
33
34
48
50 if self.obex:
51 self.log('Switching from OBEX to modem')
52 self.obex.disconnect()
53 del self.obex
54 self.obex=None
55 return True
56
57
78
101
102 - def _get_del_new_list(self, index_key, media_key, merge, fundamentals,
103 origins):
104 """Return a list of media being deleted and being added"""
105 _index=fundamentals.get(index_key, {})
106 _media=fundamentals.get(media_key, {})
107 _index_file_list=[_entry['name'] for _entry in _index.values() \
108 if _entry.has_key('filename') and \
109 _entry.get('origin', None) in origins ]
110 _bp_file_list=[_entry['name'] for _entry in _media.values() \
111 if _entry.get('origin', None) in origins ]
112 if merge:
113
114 _del_list=[]
115 _new_list=_bp_file_list
116 else:
117
118 _del_list=[x for x in _index_file_list if x not in _bp_file_list]
119 _new_list=_bp_file_list
120 return _del_list, _new_list
121
122 - def _del_files(self, index_key, media_path, _del_list, fundamentals):
123 """Delete specified media files, need to be in OBEX mode"""
124 _index=fundamentals.get(index_key, {})
125 for _file in _del_list:
126 _file_name=media_path+'/'+_file
127 try:
128 self.obex.rmfile(_file_name)
129 except Exception, e:
130 self.log('Failed to delete OBEX file %s: %s'%(_file_name, `e`))
131
132 - def _replace_files(self, index_key, media_key, new_list, fundamentals):
133 """Replace existing files with new contents using BREW"""
134 _index=fundamentals.get(index_key, {})
135 _media=fundamentals.get(media_key, {})
136 for _file in new_list:
137 _data=self._item_from_index(_file, 'data', _media)
138 if not _data:
139 self.log('Failed to write file %s due to no data'%_file)
140 continue
141 _file_name=self._item_from_index(_file, 'filename', _index)
142 if _file_name:
143
144 _stat=self.statfile(_file_name)
145 if _stat and _stat['size']!=len(_data):
146
147 try:
148 self.writefile(_file_name, _data)
149 except:
150 self.log('Failed to write BREW file '+_file_name)
151 if __debug__:
152 raise
153
154 - def _add_files(self, index_key, media_key, media_path,
155 new_list, fundamentals):
156 """Add new file using OBEX"""
157 _index=fundamentals.get(index_key, {})
158 _media=fundamentals.get(media_key, {})
159 for _file in new_list:
160 _data=self._item_from_index(_file, 'data', _media)
161 if not _data:
162 self.log('Failed to write file %s due to no data'%_file)
163 continue
164 if self._item_from_index(_file, None, _index) is None:
165
166 _file_name=media_path+'/'+_file
167 try:
168 self.obex.writefile(_file_name, _data)
169 except:
170 self.log('Failed to write OBEX file '+_file_name)
171 if __debug__:
172 raise
173
175 """Save ringtones to the phone"""
176 self.log('Writing ringtones to the phone')
177 self.setmode(self.MODEPHONEBOOK)
178 self.setmode(self.MODEBREW)
179 try:
180 _del_list, _new_list=self._get_del_new_list('ringtone-index',
181 'ringtone',
182 merge,
183 fundamentals,
184 frozenset(['ringers']))
185
186 self._replace_files('ringtone-index', 'ringtone',
187 _new_list, fundamentals)
188
189 self.setmode(self.MODEOBEX)
190 self._del_files('ringtone-index', 'audio',
191 _del_list, fundamentals)
192
193 self._add_files('ringtone-index', 'ringtone', 'audio',
194 _new_list, fundamentals)
195 except:
196 if __debug__:
197 self.setmode(self.MODEMODEM)
198 raise
199 self.setmode(self.MODEMODEM)
200 return fundamentals
201
203 """Save wallpapers to the phone"""
204 self.log('Writing wallpapers to the phone')
205 self.setmode(self.MODEPHONEBOOK)
206 self.setmode(self.MODEBREW)
207 try:
208 _del_list, _new_list=self._get_del_new_list('wallpaper-index',
209 'wallpapers',
210 merge,
211 fundamentals,
212 frozenset(['images']))
213
214 self._replace_files('wallpaper-index', 'wallpapers',
215 _new_list, fundamentals)
216
217 self.setmode(self.MODEOBEX)
218 self._del_files('wallpaper-index', 'picture',
219 _del_list, fundamentals)
220
221 self._add_files('wallpaper-index', 'wallpapers', 'picture',
222 _new_list, fundamentals)
223 except:
224 if __debug__:
225 self.setmode(self.MODEMODEM)
226 raise
227 self.setmode(self.MODEMODEM)
228 return fundamentals
229
230
231 parentprofile=com_motov710.Profile
233
234 serialsname=Phone.serialsname
235 phone_model='V710M'
236
237 _supportedsyncs=(
238 ('phonebook', 'read', None),
239 ('phonebook', 'write', 'OVERWRITE'),
240 ('calendar', 'read', None),
241 ('calendar', 'write', 'OVERWRITE'),
242 ('ringtone', 'read', None),
243 ('ringtone', 'write', None),
244 ('ringtone', 'write', 'OVERWRITE'),
245 ('wallpaper', 'read', None),
246 ('wallpaper', 'write', None),
247 ('wallpaper', 'write', 'OVERWRITE'),
248 ('sms', 'read', None),
249 )
250