Skip to content

Commit 7457cf3

Browse files
author
Jorge Aparicio
committed
expose bits
closes #41
1 parent 16cfd54 commit 7457cf3

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

src/lib.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,10 @@ pub fn gen_register(r: &Register, d: &Defaults) -> Vec<Tokens> {
517517
Access::ReadOnly => {
518518
items.push(quote! {
519519
impl #name {
520+
pub fn read_bits(&self) -> #bits_ty {
521+
self.register.read()
522+
}
523+
520524
pub fn read(&self) -> #name_r {
521525
#name_r { bits: self.register.read() }
522526
}
@@ -526,6 +530,22 @@ pub fn gen_register(r: &Register, d: &Defaults) -> Vec<Tokens> {
526530
Access::ReadWrite => {
527531
items.push(quote! {
528532
impl #name {
533+
pub fn read_bits(&self) -> #bits_ty {
534+
self.register.read()
535+
}
536+
537+
pub unsafe fn modify_bits<F>(&mut self, f: F)
538+
where F: FnOnce(&mut #bits_ty)
539+
{
540+
let mut bits = self.register.read();
541+
f(&mut bits);
542+
self.register.write(bits);
543+
}
544+
545+
pub unsafe fn write_bits(&mut self, bits: #bits_ty) {
546+
self.register.write(bits);
547+
}
548+
529549
pub fn modify<F>(&mut self, f: F)
530550
where for<'w> F: FnOnce(&#name_r, &'w mut #name_w) -> &'w mut #name_w,
531551
{
@@ -554,6 +574,10 @@ pub fn gen_register(r: &Register, d: &Defaults) -> Vec<Tokens> {
554574
Access::WriteOnly => {
555575
items.push(quote! {
556576
impl #name {
577+
pub unsafe fn write_bits(&mut self, bits: #bits_ty) {
578+
self.register.write(bits);
579+
}
580+
557581
pub fn write<F>(&self, f: F)
558582
where F: FnOnce(&mut #name_w) -> &mut #name_w,
559583
{

0 commit comments

Comments
 (0)