@@ -9,12 +9,12 @@ def process_header(src, extern_py=False, implement_py=False, prefix=''):
9
9
10
10
src = src .replace ('dss_long_bool' , 'int32_t' )
11
11
12
- src = re .sub ('^.*namespace dss .*$' , '' , src , flags = re .MULTILINE )
12
+ src = re .sub ('^.*namespace .*$' , '' , src , flags = re .MULTILINE )
13
13
if not implement_py :
14
14
src = re .sub ('^extern .*' , '' , src , flags = re .MULTILINE )
15
15
src = re .sub ('^.*extern .*$' , '' , src , flags = re .MULTILINE )
16
16
src = re .sub ('^#.*' , '' , src , flags = re .MULTILINE )
17
- src = re .sub ('DSS_CAPI_.*DLL' , '' , src )
17
+ src = re .sub ('( DSS_CAPI_.*DLL)|(ALTDSS_.*_DLL) ' , '' , src )
18
18
src = re .sub (
19
19
r'DSS_MODEL_CALLBACK\(([^,]+), ([^\)]+)\)' ,
20
20
r'\1 ({call_convention}*\2)' .format (call_convention = call_convention ),
@@ -75,51 +75,53 @@ def process_header(src, extern_py=False, implement_py=False, prefix=''):
75
75
76
76
src_path = os .environ .get ('SRC_DIR' , '' )
77
77
DSS_CAPI_PATH = os .environ .get ('DSS_CAPI_PATH' , os .path .join (src_path , '..' , 'dss_capi' ))
78
-
79
- for version in ('' , 'd ' ):
78
+
79
+ for version in ('dss_capi ' , 'dss_capid' , 'altdss_oddie_capi ' ):
80
80
ffi_builder_dss = FFI ()
81
81
debug = 'd' if version .endswith ('d' ) else ''
82
82
83
- main_header_fn = os .path .join (DSS_CAPI_PATH , 'include' , 'dss_capi.h' )
84
- dss_capi_ctx_path = os .path .join (DSS_CAPI_PATH , 'include' , 'dss_capi_ctx.h' )
85
- headers = [main_header_fn , dss_capi_ctx_path ]
86
- # Temporary fixes for DSS C-API headers
87
- for fn in headers :
88
- with open (fn , 'r' ) as f :
89
- patched = (f .read ().
90
- replace (' ctx_Fuses_Reset(void* ctx, int32_t Value)' , ' ctx_Fuses_Reset(void* ctx)' ).
91
- replace (' Fuses_Reset(int32_t Value)' , ' Fuses_Reset(void)' )
92
- )
93
- with open (fn , 'w' ) as f :
94
- f .write (patched )
83
+ if 'oddie' not in version :
84
+ main_header_fn = os .path .join (DSS_CAPI_PATH , 'include' , 'dss_capi.h' )
85
+ dss_capi_ctx_path = os .path .join (DSS_CAPI_PATH , 'include' , 'dss_capi_ctx.h' )
86
+ # headers = [main_header_fn, dss_capi_ctx_path]
87
+ else :
88
+ main_header_fn = os .path .join (DSS_CAPI_PATH , 'include' , 'altdss' , 'altdss_oddie.h' )
89
+ dss_capi_ctx_path = None
90
+ # headers = [main_header_fn]
95
91
96
92
with open (main_header_fn , 'r' ) as f :
97
93
cffi_header_dss = process_header (f .read ())
98
-
99
- if os .path .exists (dss_capi_ctx_path ):
100
- with open (dss_capi_ctx_path , 'r' ) as f :
101
- cffi_header_dss += process_header (f .read ())
102
-
103
- with open ('cffi/dss_capi_custom.h' , 'r' ) as f :
104
- extra_header_dss = f .read ()
105
-
106
- cffi_header_dss += extra_header_dss
107
-
108
- with open ('cffi/dss_capi_custom.c' , 'r' ) as f :
94
+
95
+ if 'oddie' not in version :
109
96
if os .path .exists (dss_capi_ctx_path ):
110
- extra_source_dss = '#include <dss_capi_ctx.h>\n '
111
- extra_source_dss += f .read ()
112
- else :
113
- extra_source_dss = f .read ()
114
-
97
+ with open (dss_capi_ctx_path , 'r' ) as f :
98
+ cffi_header_dss += process_header (f .read ())
99
+
100
+ with open ('cffi/dss_capi_custom.h' , 'r' ) as f :
101
+ extra_header_dss = f .read ()
102
+
103
+ cffi_header_dss += extra_header_dss
104
+
105
+ with open ('cffi/dss_capi_custom.c' , 'r' ) as f :
106
+ if os .path .exists (dss_capi_ctx_path ):
107
+ extra_source_dss = '#include <dss_capi_ctx.h>\n '
108
+ extra_source_dss += f .read ()
109
+ else :
110
+ extra_source_dss = f .read ()
111
+ else :
112
+ extra_source_dss = '#include <altdss_oddie.h>\n '
113
+
115
114
ffi_builder_dss .cdef (cffi_header_dss )
116
115
117
- ffi_builder_dss .set_source ("_dss_capi{}" . format ( debug ) , extra_source_dss ,
118
- libraries = ["dss_capi{}" . format ( debug ) ],
116
+ ffi_builder_dss .set_source (f"_ { version } " , extra_source_dss ,
117
+ libraries = [version ],
119
118
library_dirs = [
120
119
os .path .join (DSS_CAPI_PATH , 'lib/{}' .format (PLATFORM_FOLDER ))
121
120
],
122
- include_dirs = [os .path .join (DSS_CAPI_PATH , 'include' )],
121
+ include_dirs = [
122
+ os .path .join (DSS_CAPI_PATH , 'include' ),
123
+ os .path .join (DSS_CAPI_PATH , 'include/altdss' ),
124
+ ],
123
125
source_extension = '.c' ,
124
126
** extra
125
127
)
@@ -165,8 +167,9 @@ def process_header(src, extern_py=False, implement_py=False, prefix=''):
165
167
166
168
# Is there a better way to do this? Unfortunately setup(cffi_modules=...)
167
169
# needs a list of strings and cannot handle objects directly
168
- ffi_builder_ = ffi_builders ['' ]
169
- ffi_builder_d = ffi_builders ['d' ]
170
+ ffi_builder_ = ffi_builders ['dss_capi' ]
171
+ ffi_builder_d = ffi_builders ['dss_capid' ]
172
+ ffi_builder_odd = ffi_builders ['altdss_oddie_capi' ]
170
173
ffi_builder_GenUserModel = ffi_builders ['GenUserModel' ]
171
174
#ffi_builder_PVSystemUserModel = ffi_builders['PVSystemUserModel']
172
175
#ffi_builder_StoreDynaModel = ffi_builders['StoreDynaModel']
0 commit comments