Compare commits
15 Commits
c62f10f0aa
...
feat/38-fs
Author | SHA1 | Date | |
---|---|---|---|
0ef8ede764
|
|||
ae68de8a3c | |||
e24b9c7859 | |||
c83824ae34 | |||
1b94fefad3
|
|||
5f7229c307
|
|||
d043915a29
|
|||
2260b0cfa8
|
|||
203521fe01
|
|||
3c1e691cb8
|
|||
add40f32c5 | |||
d8b8ce9a77
|
|||
9997ee43f8
|
|||
4ab8a1de81
|
|||
d13f36c5e2
|
@ -13,13 +13,6 @@
|
|||||||
|
|
||||||
Les détails de l'avancement de l'implémentation des bindings FSV sont donnés dans le fichier [PROGRESS.md](PROGRESS.md)
|
Les détails de l'avancement de l'implémentation des bindings FSV sont donnés dans le fichier [PROGRESS.md](PROGRESS.md)
|
||||||
|
|
||||||
| Module | Progression |
|
|
||||||
|-------------|------------------------------------|
|
|
||||||
| [SSV](#ssv) |  |
|
|
||||||
| [SGD](#sgd) |  |
|
|
||||||
| [SRT](#srt) |  |
|
|
||||||
| [STS](#sts) |  |
|
|
||||||
|
|
||||||
## Utilisation
|
## Utilisation
|
||||||
|
|
||||||
### Pré-requis
|
### Pré-requis
|
||||||
@ -39,5 +32,5 @@ Les détails de l'avancement de l'implémentation des bindings FSV sont donnés
|
|||||||
|
|
||||||
### Pré-requis
|
### Pré-requis
|
||||||
|
|
||||||
- Pour la génération des bindings lors de la pahse de `build` à l'aide de `bindgen`, il est nécessaire d'avoir installé `clang` ([documentation](https://rust-lang.github.io/rust-bindgen/requirements.html)).
|
- Pour la génération des bindings lors de la phase de `build` à l'aide de `bindgen`, il est nécessaire d'avoir installé `clang` ([documentation](https://rust-lang.github.io/rust-bindgen/requirements.html)).
|
||||||
|
|
||||||
|
@ -3,6 +3,8 @@ use thiserror::Error;
|
|||||||
|
|
||||||
#[derive(Error, Debug, Eq, PartialEq, FromPrimitive)]
|
#[derive(Error, Debug, Eq, PartialEq, FromPrimitive)]
|
||||||
#[repr(u16)]
|
#[repr(u16)]
|
||||||
|
/// Liste des codes d'erreur retournés par la librairie C SSV
|
||||||
|
/// Documentation: Manuel de programmation SSV - Annexe A (p. 215)
|
||||||
pub enum SSVErrorCodes {
|
pub enum SSVErrorCodes {
|
||||||
#[error("La Carte du Professionnel de Santé est absente du lecteur.")]
|
#[error("La Carte du Professionnel de Santé est absente du lecteur.")]
|
||||||
CPSMissing = 0xF001,
|
CPSMissing = 0xF001,
|
||||||
@ -17,7 +19,7 @@ pub enum SSVErrorCodes {
|
|||||||
/// - Sécurisation d'une série de lots en cours.
|
/// - 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.
|
/// - 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.
|
/// - 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
|
/// - Décharger Données Bénéficiaires : cette erreur peut survenir pour signaler que le format des données issues du lecteur est incompatible avec cette version de SSV.
|
||||||
#[error("F022: Erreur commune à plusieurs fonctions.")]
|
#[error("F022: Erreur commune à plusieurs fonctions.")]
|
||||||
F022 = 0xF022,
|
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.")]
|
||||||
|
@ -122,30 +122,30 @@ impl SSV {
|
|||||||
/// # Get the configuration of the SSV library
|
/// # Get the configuration of the SSV library
|
||||||
/// Implement: SSV_LireConfig
|
/// Implement: SSV_LireConfig
|
||||||
pub fn get_config(&self) -> Result<Data, Error> {
|
pub fn get_config(&self) -> Result<Data, Error> {
|
||||||
let mut buffer_ptr: *mut libc::c_void = ptr::null_mut();
|
let mut out_buffer_ptr: *mut libc::c_void = ptr::null_mut();
|
||||||
let mut size: libc::size_t = 0;
|
let mut out_buffer_size: libc::size_t = 0;
|
||||||
|
|
||||||
let result = match &self.library {
|
let result = match &self.library {
|
||||||
SsvLibraryVersion::V1_40_13(library) => {
|
SsvLibraryVersion::V1_40_13(library) => {
|
||||||
unsafe { library.ssv_lire_config(&mut buffer_ptr, &mut size) }?
|
unsafe { library.ssv_lire_config(&mut out_buffer_ptr, &mut out_buffer_size) }?
|
||||||
},
|
},
|
||||||
SsvLibraryVersion::V1_40_14(library) => {
|
SsvLibraryVersion::V1_40_14(library) => {
|
||||||
unsafe { library.ssv_lire_config(&mut buffer_ptr, &mut size) }?
|
unsafe { library.ssv_lire_config(&mut out_buffer_ptr, &mut out_buffer_size) }?
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
if result != 0 {
|
if result != 0 {
|
||||||
// Free memory
|
// Free memory
|
||||||
unsafe { libc::free(buffer_ptr) };
|
unsafe { libc::free(out_buffer_ptr) };
|
||||||
let error = SSVErrorCodes::from(result);
|
let error = SSVErrorCodes::from(result);
|
||||||
return Err(Error::SSVError(error));
|
return Err(Error::SSVError(error));
|
||||||
}
|
}
|
||||||
// Print the buffer
|
// Parse the buffer into a Data struct
|
||||||
let buffer = unsafe { std::slice::from_raw_parts(buffer_ptr as *const u8, size) };
|
let buffer = unsafe { std::slice::from_raw_parts(out_buffer_ptr as *const u8, out_buffer_size) };
|
||||||
let (_rest, config_blocks) = Data::from_bytes((buffer, 0)).unwrap();
|
let (_rest, config_blocks) = Data::from_bytes((buffer, 0)).unwrap();
|
||||||
|
|
||||||
// Free memory
|
// Free memory
|
||||||
unsafe { libc::free(buffer_ptr) };
|
unsafe { libc::free(out_buffer_ptr) };
|
||||||
Ok(config_blocks)
|
Ok(config_blocks)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,6 @@
|
|||||||
if (user.avatar) {
|
if (user.avatar) {
|
||||||
return user.avatar;
|
return user.avatar;
|
||||||
}
|
}
|
||||||
return 'https://avatar.iran.liara.run/username?username=' + user.name;
|
return 'https://i.pravatar.cc/150?u=' + user.name;
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
@ -29,15 +29,15 @@
|
|||||||
|
|
||||||
const users: User[] = [
|
const users: User[] = [
|
||||||
{ id: 1, name: 'John Doe', avatar: 'https://img.daisyui.com/images/stock/photo-1534528741775-53994a69daeb.webp' },
|
{ id: 1, name: 'John Doe', avatar: 'https://img.daisyui.com/images/stock/photo-1534528741775-53994a69daeb.webp' },
|
||||||
{ id: 2, name: 'Jane Doe', avatar: 'https://avatar.iran.liara.run/public' },
|
{ id: 2, name: 'Jane Doe', avatar: 'https://i.pravatar.cc/150?u=JANEDOE728' },
|
||||||
{ id: 3, name: 'Michel Moulin', avatar: '' },
|
{ id: 3, name: 'Michel Moulin' },
|
||||||
{ id: 4, name: 'Jean Paris', avatar: '' },
|
{ id: 4, name: 'Jean Paris' },
|
||||||
{ id: 5, name: 'Marie Dupont', avatar: '' },
|
{ id: 5, name: 'Marie Dupont' },
|
||||||
{ id: 6, name: 'Émilie Fournier', avatar: '' },
|
{ id: 6, name: 'Émilie Fournier' },
|
||||||
{ id: 7, name: 'Pierre Lefevre', avatar: '' },
|
{ id: 7, name: 'Pierre Lefevre' },
|
||||||
{ id: 8, name: 'Sophie Lemoine', avatar: '' },
|
{ id: 8, name: 'Sophie Lemoine' },
|
||||||
{ id: 9, name: 'Lucie Simon', avatar: '' },
|
{ id: 9, name: 'Lucie Simon' },
|
||||||
{ id: 10, name: 'Kevin Boucher', avatar: '' },
|
{ id: 10, name: 'Kevin Boucher' },
|
||||||
];
|
];
|
||||||
|
|
||||||
const loginModal = useTemplateRef('login_modal');
|
const loginModal = useTemplateRef('login_modal');
|
||||||
|
Reference in New Issue
Block a user