blob: ef574fe8e887e360bd59fe544555910dd32d3f9e [file] [log] [blame]
.. _c_interface:
C
=====
.. _C_main_API:
Main solver API
---------------
The main C API is imported from the header :code:`osqp.h` and provides the following functions
.. doxygenfunction:: osqp_setup
.. doxygenfunction:: osqp_solve
.. doxygenfunction:: osqp_cleanup
.. _C_sublevel_API:
Sublevel API
------------
Sublevel C API is also imported from the header :code:`osqp.h` and provides the following functions
Warm start
^^^^^^^^^^
OSQP automatically warm starts primal and dual variables from the previous QP solution. If you would like to warm start their values manually, you can use
.. doxygenfunction:: osqp_warm_start
.. doxygenfunction:: osqp_warm_start_x
.. doxygenfunction:: osqp_warm_start_y
.. _c_cpp_update_data :
Update problem data
^^^^^^^^^^^^^^^^^^^
Problem data can be updated without executing the setup again using the following functions.
.. doxygenfunction:: osqp_update_lin_cost
.. doxygenfunction:: osqp_update_lower_bound
.. doxygenfunction:: osqp_update_upper_bound
.. doxygenfunction:: osqp_update_bounds
.. doxygenfunction:: osqp_update_P
.. doxygenfunction:: osqp_update_A
.. doxygenfunction:: osqp_update_P_A
.. _c_cpp_data_types :
Data types
----------
The most basic used datatypes are
* :code:`c_int`: can be :code:`long` or :code:`int` if the compiler flag :code:`DLONG` is set or not
* :code:`c_float`: can be a :code:`float` or a :code:`double` if the compiler flag :code:`DFLOAT` is set or not.
The relevant structures used in the API are
Data
^^^^
.. doxygenstruct:: OSQPData
:members:
The matrices are defined in `Compressed Sparse Column (CSC) format <https://people.sc.fsu.edu/~jburkardt/data/cc/cc.html>`_ using zero-based indexing.
.. doxygenstruct:: csc
:members:
Settings
^^^^^^^^
.. doxygenstruct:: OSQPSettings
:members:
Solution
^^^^^^^^
.. doxygenstruct:: OSQPSolution
:members:
Info
^^^^^
.. doxygenstruct:: OSQPInfo
:members:
Workspace
^^^^^^^^^
.. doxygenstruct:: OSQPWorkspace
:members:
Scaling
^^^^^^^
.. doxygenstruct:: OSQPScaling
:members:
Polish
^^^^^^
.. doxygenstruct:: OSQPPolish
:members:
.. TODO: Add sublevel API
.. TODO: Add using your own linear system solver