gxci 0.3.2

A safe raw-and-HAL camera interface based on Daheng-Image's GxIAPI(Galaxy Camera SDK)
Documentation
<p align="center" dir="auto">
    <img style="height:240px;width:240px"  src="https://s2.loli.net/2024/09/08/uDKESYW7ks9eRyf.png" alt="Logo逃走啦~"/>
</p>

<h1 align="center" tabindex="-1" class="heading-element" dir="auto">GXCI</h1>

<p align="center">
  <a href="https://crates.io/crates/gxci" target="_blank"><img src="https://img.shields.io/crates/v/gxci"/></a>
  <a href="https://docs.rs/gxci" target="_blank"><img src="https://img.shields.io/docsrs/gxci/0.3.2"/></a>
  <a href="https://github.com/zoneherobrine/gxci" target="_blank"><img src="https://img.shields.io/badge/License-MIT-green.svg"/></a>
</p>

<p align="center">
    Rust-based safe interface development for Daheng Industrial Camera GxIAPI
</p>

<hr />

# New Things in 0.3

1. [x] CHECK:   Check module for COMMON error handling
2. [x] CONFIG:  Full HAL and Raw-binding config module
   - Some FeatureID are missing, so the config module has a few functions are not implemented now.
3. [x] CONTROL: Commonly used part of control module (Based on the Galaxy Viewer's sidebar)
4. [x] 0.3.2 gxi_use_stream() allows you to use the custom stream callback function to process the image data. You can see the usage in the hal_use_stream example.

# Quick Start

1. Ensure you have OpenCV Rust Bindings installed, if not, you can see the [crates page's README]https://crates.io/crates/gxci
2. Ensure your camera version is supported by the GxIAPI SDK,and ensure you have installed the GxIAPI SDK.

# HAL Part

There five main modules in the HAL: base, device, config, event and network. 

But until 0.3, the event and network module are not implemented.

# RAW Part

The RAW part in GXCI is all-safety, with LazyLock-Arc-Mutex-Option. And you can find the unsafe static mut implementation in the precious lib called [gxi_hako](https://crates.io/crates/gxi_hako), which is a deprecated RAW-only version of GXCI.

# Utils Part

Just the builder pattern and facade pattern, they are friendly to debug.