
In Progress
Posted
Paid on delivery
I need two production-quality C applications that talk to an ultrasonic parking-sensor front-end over /dev/spidev2.0. The first file, parking_sensor_ch1.c, must • open the spidev device, set Mode 1 at 2 MHz, • execute the channel-1 initialisation sequence, • upload the TDMA scheme, then enter continuous direct-measurement mode, • read each incoming PDCM frame, separate diagnostic data from echo data, • compute time-of-flight and translate it into centimetres, • classify the result as Near, Mid, Long or No Object and immediately display that label on the console, • detect any timeout or lack of response and automatically retry the full measurement cycle before proceeding, • expose a manual-calibration routine that can be invoked from the command line or an in-program menu. The second file will mirror this flow for the remaining channel; the structure, code quality and behaviour must be identical aside from channel-specific changes. Both programs have to compile cleanly with GCC on a recent 64-bit Linux kernel (makefile appreciated), follow MISRA-friendly practices, and keep all SPI and math operations non-blocking so they can be dropped into a larger real-time system later. Deliverables 1. parking_sensor_ch1.c 2. parking_sensor_ch2.c (or clearly named equivalent) 3. A brief README covering build steps, calibration instructions and expected console output I will run the binaries on actual hardware and check that a connected target at various distances is reported accurately, retries occur on forced timeouts, and manual calibration shifts the thresholds as expected.
Project ID: 40520251
3 proposals
Remote project
Active 8 days ago
Set your budget and timeframe
Get paid for your work
Outline your proposal
It's free to sign up and bid on jobs

? Hello, The most critical part of this project isn't the SPI communication—it's ensuring reliable frame processing, timeout recovery, and accurate distance classification under real hardware conditions. ? I can develop both channel applications with a shared, maintainable architecture while keeping channel-specific logic isolated. This ensures identical behavior across channels and makes future maintenance significantly easier. ✔ SPI communication via /dev/spidev2.0 ✔ Mode 1 @ 2 MHz configuration ✔ TDMA upload and direct measurement mode ✔ PDCM frame parsing ✔ Diagnostic and echo data separation ✔ Time-of-flight to distance conversion ✔ Near / Mid / Long / No Object classification ✔ Automatic timeout detection and recovery ✔ Manual calibration interface ✔ GCC-compatible Makefile ✔ MISRA-friendly coding practices ✔ Comprehensive README ? I would structure the code as reusable modules for SPI handling, frame parsing, calibration, and classification to keep the implementation clean and suitable for integration into larger real-time systems. ❓ One question: Will you provide the sensor IC datasheet/protocol specification (initialization sequence, TDMA format, and PDCM frame structure), or is there existing reference code available? ? Once the protocol details are available, I can deliver production-ready code designed for reliability, maintainability, and hardware validation. Best regards
€19 EUR in 4 days
0.0
0.0
3 freelancers are bidding on average €346 EUR for this job

Hi there, I reviewed your ultrasonic parking sensor C application requirements and can help build two production-quality Linux SPI programs for channel 1 and channel 2 with matching structure and behaviour. My approach * Build parking_sensor_ch1.c and parking_sensor_ch2.c to open /dev/spidev2.0, configure SPI Mode 1 at 2 MHz, run channel initialization, upload TDMA, and enter continuous measurement mode. * Parse incoming PDCM frames, separate diagnostic and echo data, calculate time-of-flight, convert distance to centimetres, and classify results as Near, Mid, Long, or No Object. * Add timeout detection, retry handling, manual calibration via command line or menu, and clean console output for live testing. * Provide MISRA-friendly C code, GCC build support, Makefile, README, calibration notes, and expected output examples. I have experience with embedded Linux, C, SPI/spidev, sensor communication, non-blocking logic, hardware data parsing, calibration routines, and production-ready Linux utilities. One question, can you provide the sensor datasheet or register/command sequence for the channel initialization and TDMA upload? Cheers, Alexander
€19 EUR in 7 days
6.0
6.0

I can help you. I will implement the /dev/spidev2.0 interface using non-blocking ioctl calls and a state-machine architecture to ensure the TDMA configuration and PDCM frame processing never stall your real-time system. My approach will utilize fixed-point math for the ToF-to-cm conversion to maintain MISRA-friendly efficiency and avoid floating-point overhead. I will build the retry logic and diagnostic data separation directly into the polling loop, ensuring robust error recovery without blocking. The calibration routine will be implemented as a modular function accessible via CLI flags or an internal menu. Both applications will share a common core logic to ensure identical behavior across channels while remaining strictly GCC-compliant for 64-bit Linux.
€1,000 EUR in 7 days
5.7
5.7

Mannheim, Germany
Payment method verified
Member since Jun 17, 2026
$30-250 AUD
£20-250 GBP
$250-750 USD
€8-30 EUR
€250-750 EUR
$15-25 USD / hour
$750-1500 AUD
$15-25 USD / hour
₹750-1250 INR / hour
$750-1500 USD
$250-750 USD
₹750-1250 INR / hour
₹750-1250 INR / hour
$8-15 USD / hour
$30-250 USD
$2-8 USD / hour
$10-120 USD
$750-1500 USD
$100 USD
₹12500-37500 INR