C/C++/Java Expert: support us on building c/c++ code under mac

Job ID: 36259404

Budget: $2 – $20 USD

This is a test task to find the right partner for onging work on this topic.
Expected solution time: in a few weeks, we focus on quality-delivery & honest-estimation more than "quick & dirty" or "overseller"

Your task is to help us to build the evil side ;-) mac (we provide linux+windows)
In the case you have to build a dll of pjsip for macOS x64 and ARM, which detects incoming SIP/VoIP calls and take over tasks managed in a issue tracker for the java, c++ side and for linux, windows and mac

Examples:
https://github.com/pjsip/pjproject/blob/master/pjsip-apps/src/swig/java/sample.java
https://github.com/pjsip/pjproject/blob/master/pjsip-apps/src/swig/java/sample2.java
https://docs.pjsip.org/en/latest/pjsua2/using/call.html)
So the app has to work on a desktop (macOS) and have to communicate with a SIP provider only. e.g https://www.sipgate.com/ (we will share you a fully working sip account after award)
Later (not scope here) ports to iOS/Android required too

The caller-URL contains some query parameters, like the callers number.
The app can run only one instance and is listening to incoming calls. On incoming call it triggers a browser open of the above caller URL like https://example.com?phoneNum=001-345678.

The full SIP environment will be:
- your SIP app, connected to the sipgate-account
- optionally other machines also running your SIP app on multiple desktops
- one or more SIP physical desk phones running on same SIP account
- one ore more softphones (laptop, smartphone, ...) running on same SIP account

Process:
1. your SIP application shall detect incoming POTS calls (rings, no hook take off)
2. if possible to detect which device has taken off hook (the call) (e.g. if the desktop phone picked the call)
3. if possible how long the call was going with the different phone to measure the call duration

The listener shall be configurable via xml config file, means
- what URL to call
- which phone numbers to ignore (regex)
- which phone numbers to track (regEx)

You need to implement for:
- mac x64 & ARM (a basic java best practice and requirement, ensure system independent development)

What is NOT needed:
- a UI (not required, implement a JUnit test to call your functions)
- a service architecture (like spring or JEE)
- any persistence, except configuration
- a voice/audio implementation for SIP (only incoming ringing required)

Milestones:

MS1:
very basic implementation of pjsip to listen on incoming calls and to open browser URL
packaged for MAC x64 for testing
- no config file needed here
- no other device detection needed here

MS2:
the same as MS1, but for MAC ARM

MS3:
provide command line interface for MS1 and for being able to trigger a call from pjsip app via command line
e.g. you can run command
yourApp.jar sip:003734567890

MS4:
make pjsip app trayed
So no UI is shown to a user for background operations of pjsip until some event is happening (icoming or outgoing call)

MS5:
package pjsip app in a custom installer
which asks the user on first starting in a very simplistic UI, about the required SIP account details

What are our requirements?
- your code passes checkstyle, pmd and spotbugs (we will share you a git repo with eclipse settings)
- JDK17
- maven
- runs on win, mac m1/intel, linux (later on android + ios)
- create a model class representing the input of your function
- create a service class implementing the logic
- delivery in our git

Outlook
- after this test phase, we will have more tasks to implement to a full app, so preferably you/your team will get also this tasks

What is our budget?
we do not disclose our budget nor planned hourly rate. Offer us your best bid.

Your bid?
Place your best hourly bid. We do not want to negotiate with you anymore after getting in touch with you.
So place your best bid to save time