Skip to content

Commit 91e8161

Browse files
committed
Refactor radar configuration to use Configure method
Replaces direct Radar object construction with a new Configure method for radar setup. Updates Cython interface and usage in simulator_radar.pyx to improve clarity and separation of configuration logic.
1 parent 006b11f commit 91e8161

File tree

4 files changed

+22
-17
lines changed

4 files changed

+22
-17
lines changed

src/radarsimpy/includes/radarsimc.pxd

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,14 @@ cdef extern from "radar.hpp":
260260
Vec3[L] speed_array, # Platform velocity
261261
vector[Vec3[L]] & rotation_array, # Platform orientations
262262
Vec3[L] rotrate_array) except + # Platform rotation rates
263+
264+
void Configure(Transmitter[H, L] & tx, # Transmitter configuration
265+
Receiver[L] & rx, # Receiver configuration
266+
vector[H] & frame_start_time, # Frame timing array (s)
267+
vector[Vec3[L]] & location_array, # Platform locations
268+
Vec3[L] speed_array, # Platform velocity
269+
vector[Vec3[L]] & rotation_array, # Platform orientations
270+
Vec3[L] rotrate_array) except + # Platform rotation rates
263271

264272
# Memory management for baseband data
265273
void InitBaseband(H *bb_real, # Real baseband buffer

src/radarsimpy/lib/cp_radarsimc.pxd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ cdef void cp_AddPoint(location, speed, rcs, phase, shape, PointsManager[float_t]
4848
# Create a Radar system object for simulation
4949
# Converts Python radar config to C++ with complete transmitter/receiver setup
5050
# Raises ValueError for invalid config, RuntimeError for setup failures
51-
cdef Radar[double, float_t] cp_Radar(radar, frame_start_time) except *
51+
cdef void cp_ConfigureRadar(radar, frame_start_time, Radar[double, float_t] * cptr_radar) except *
5252

5353
# Create a Target object specifically optimized for RCS calculations
5454
# Simplified target object without full dynamic simulation requirements

src/radarsimpy/lib/cp_radarsimc.pyx

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ cdef RxChannel[float_t] cp_RxChannel(rx,
530530
@cython.cdivision(True)
531531
@cython.boundscheck(False)
532532
@cython.wraparound(False)
533-
cdef Radar[double, float_t] cp_Radar(radar, frame_start_time):
533+
cdef void cp_ConfigureRadar(radar, frame_start_time, Radar[double, float_t] * cptr_radar):
534534
"""
535535
cp_Radar(radar, frame_start_time)
536536
@@ -583,7 +583,6 @@ cdef Radar[double, float_t] cp_Radar(radar, frame_start_time):
583583
"""
584584
cdef Transmitter[double, float_t] tx_c
585585
cdef Receiver[float_t] rx_c
586-
cdef Radar[double, float_t] radar_c
587586

588587
# Extract key system dimensions from radar configuration
589588
cdef int_t txsize_c = radar.radar_prop["transmitter"].txchannel_prop["size"]
@@ -667,15 +666,13 @@ cdef Radar[double, float_t] cp_Radar(radar, frame_start_time):
667666
spd_vt = Vec3[float_t](<float_t>radar.radar_prop["speed"][0], <float_t>radar.radar_prop["speed"][1], <float_t>radar.radar_prop["speed"][2])
668667
rrt_vt = Vec3[float_t](<float_t>radar.radar_prop["rotation_rate"][0], <float_t>radar.radar_prop["rotation_rate"][1], <float_t>radar.radar_prop["rotation_rate"][2])
669668

670-
radar_c = Radar[double, float_t](tx_c,
671-
rx_c,
672-
t_frame_vt,
673-
loc_vt,
674-
spd_vt,
675-
rot_vt,
676-
rrt_vt)
677-
678-
return radar_c
669+
cptr_radar[0].Configure(tx_c,
670+
rx_c,
671+
t_frame_vt,
672+
loc_vt,
673+
spd_vt,
674+
rot_vt,
675+
rrt_vt)
679676

680677
@cython.cdivision(True)
681678
@cython.boundscheck(False)

src/radarsimpy/simulator_radar.pyx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ from radarsimpy.includes.radarsimc cimport (
5757

5858
# RadarSimX library components
5959
from radarsimpy.lib.cp_radarsimc cimport (
60-
cp_Radar,
60+
cp_ConfigureRadar,
6161
cp_AddTarget,
6262
cp_AddPoint
6363
)
@@ -248,8 +248,8 @@ cpdef sim_radar(radar, targets, frame_time=None, density=1, level=None, interf=N
248248
#----------------------
249249
# Core simulation objects
250250
cdef:
251-
shared_ptr[Radar[double, float_t]] radar_c
252-
shared_ptr[Radar[double, float_t]] interf_radar_c
251+
shared_ptr[Radar[double, float_t]] radar_c = make_shared[Radar[double, float_t]]()
252+
shared_ptr[Radar[double, float_t]] interf_radar_c = make_shared[Radar[double, float_t]]()
253253
Vec2[int_t] ray_filter_c
254254

255255
cdef shared_ptr[TargetsManager[float_t]] targets_manager = make_shared[TargetsManager[float_t]]()
@@ -339,7 +339,7 @@ cpdef sim_radar(radar, targets, frame_time=None, density=1, level=None, interf=N
339339

340340
cp_AddPoint(loc, spd, rcs, phs, ts_shape, points_manager.get())
341341

342-
radar_c = make_shared[Radar[double, float_t]](cp_Radar(radar, frame_start_time))
342+
cp_ConfigureRadar(radar, frame_start_time, radar_c.get())
343343

344344
cdef double[:,:,::1] bb_real = np.empty(ts_shape, order='C', dtype=np.float64)
345345
cdef double[:,:,::1] bb_imag = np.empty(ts_shape, order='C', dtype=np.float64)
@@ -446,7 +446,7 @@ cpdef sim_radar(radar, targets, frame_time=None, density=1, level=None, interf=N
446446
if interf is not None:
447447
# Use main radar frame time if interference frame time not specified
448448
interf_frame_start_time = np.array(interf.time_prop["frame_start_time"], dtype=np.float64)
449-
interf_radar_c = make_shared[Radar[double, float_t]](cp_Radar(interf, interf_frame_start_time))
449+
cp_ConfigureRadar(interf, interf_frame_start_time, interf_radar_c.get())
450450

451451
# Initialize baseband for interference calculation
452452
radar_c.get()[0].InitBaseband(&bb_real[0][0][0], &bb_imag[0][0][0])

0 commit comments

Comments
 (0)