aboutsummaryrefslogtreecommitdiff
path: root/vimbaexception.py
blob: 034f1942d6443183fc6ec3ca6770d6c952760fd3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# -*- coding: utf-8 -*-
import exceptions

class VimbaException(Exception):
	"""
	An exception for the AVT Vimba API. It contains a message
	property which is a string indicating what went wrong.
	
	:param errorCode: Error code to be used to look up error message.
	"""

	@property
	def message(self):
		return self._errorCodes[self.errorCode]
			
	@property
	def errorCode(self):
		return self._errorCode

	_errorCodes = { # Vimba C API specific errors
					 0: 	'No error.',
					-1: 	'Unexpected fault in VimbaC or driver.',
					-2: 	'VmbStartup() was not called before the current command.',
					-3: 	'The designated instance (camera, feature etc.) cannot be found.',
					-4: 	'The given handle is not valid, ensure device open.',
					-5: 	'Device was not opened for usage.',
					-6: 	'Operation is invalid with the current access mode.',
					-7: 	'One of the parameters was invalid (usually an illegal pointer).',
					-8: 	'The given struct size is not valid for this version of the API.',
					-9: 	'More data was returned in a string/list than space was provided.',
					-10:    'The feature type for this access function was wrong.',
					-11:    'The value was not valid; either out of bounds or not an increment of the minimum.',
					-12:    'Timeout during wait.',
					-13:    'Other error.',
					-14:    'Resources not available (e.g. memory).',
					-15:    'Call is invalid in the current context (e.g. callback).',
					-16:    'No transport layers were found.',
					-17:    'API feature is not implemented.',
					-18:   	'API feature is not supported.',
					-19:    'A multiple registers read or write was partially completed.',
					
					# Custom errors
					-50:	'Could not find the specified camera.',
					-51:	'Not enough memory to assign frame buffer.',
					-52:	'Invalid input.',
					-53:	'Could not find the specified feature.',
					-54:	'Could not find the specified interface.',
					
					# Miscellaneous errors					
					-1000:	'Oops, unknown internal error code!',
					-1001:	'Oops, this VimbaFeature function is not yet implemented in pymba!'}
	
	def __init__(self, errorCode):
		# if error code does not match expected codes then assign invalid code
		if errorCode in self._errorCodes:
			self._errorCode = errorCode
		else:
			self._errorCode = -1000