feat: implémentation partielle de la fonction get_config et de ses erreurs
This commit is contained in:
parent
bf5e7f201f
commit
332fb01253
@ -14,6 +14,12 @@ pub enum SSVErrorCodes {
|
|||||||
CPSInvalid = 0xF004,
|
CPSInvalid = 0xF004,
|
||||||
#[error("La Carte du Professionnel de Santé est retirée du lecteur.")]
|
#[error("La Carte du Professionnel de Santé est retirée du lecteur.")]
|
||||||
CPSRemoved = 0xF005,
|
CPSRemoved = 0xF005,
|
||||||
|
/// - Sécurisation d'une série de lots en cours.
|
||||||
|
/// - Pour les fonctions TLA (sauf Identifier TLA) : Cette erreur survient lorsque le simulateur TLA est en mode 1.50.
|
||||||
|
/// - Lire Date Lecteur, Mettre à jour Date Lecteur, Lire Droits Vitale : Cette erreur peut survenir lorsque le Logiciel Lecteur ne connaît pas la fonction sollicitée, c'est-à-dire si la version du Logiciel Lecteur est antérieure à 2.00.
|
||||||
|
/// - Décharger Données Bénéficiaires : cette erreur peut survenir pour signaler que le
|
||||||
|
#[error("F022: Erreur commune à plusieurs fonctions.")]
|
||||||
|
F022 = 0xF022,
|
||||||
#[error("Message du lecteur incohérent. Débrancher et rebrancher le lecteur.")]
|
#[error("Message du lecteur incohérent. Débrancher et rebrancher le lecteur.")]
|
||||||
PCSCInconsistentMessage = 0xF0FF,
|
PCSCInconsistentMessage = 0xF0FF,
|
||||||
#[error("Le nom de lecteur fourni ne correspond à aucun lecteur reconnu.")]
|
#[error("Le nom de lecteur fourni ne correspond à aucun lecteur reconnu.")]
|
||||||
|
@ -116,6 +116,35 @@ impl SSV {
|
|||||||
unsafe { libc::free(out_buffer_ptr) };
|
unsafe { libc::free(out_buffer_ptr) };
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// # Get the configuration of the SSV library
|
||||||
|
/// Implement: SSV_LireConfig
|
||||||
|
pub fn get_config(&self) -> Result<(), Error> {
|
||||||
|
let mut buffer_ptr: *mut libc::c_void = ptr::null_mut();
|
||||||
|
let mut size: libc::size_t = 0;
|
||||||
|
|
||||||
|
let result = match &self.library {
|
||||||
|
SsvLibraryVersion::V1_40_13(library) => {
|
||||||
|
unsafe { library.ssv_lire_config(&mut buffer_ptr, &mut size) }?
|
||||||
|
},
|
||||||
|
SsvLibraryVersion::V1_40_14(library) => {
|
||||||
|
unsafe { library.ssv_lire_config(&mut buffer_ptr, &mut size) }?
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
if result != 0 {
|
||||||
|
// Free memory
|
||||||
|
unsafe { libc::free(buffer_ptr) };
|
||||||
|
let error = SSVErrorCodes::from(result);
|
||||||
|
return Err(Error::SSVError(error));
|
||||||
|
}
|
||||||
|
// Print 10 bytes of the buffer
|
||||||
|
let buffer = unsafe { std::slice::from_raw_parts(buffer_ptr as *const u8, 10) };
|
||||||
|
println!("{:?}", buffer);
|
||||||
|
// Free memory
|
||||||
|
unsafe { libc::free(buffer_ptr) };
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@ -171,7 +200,9 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_ssv() {
|
fn test_get_config() -> Result<()> {
|
||||||
assert_eq!("ssv", "ssv");
|
let lib = setup::init()?;
|
||||||
|
lib.get_config()?;
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user