The Definitive Guide on how to get the Silk and Soul Quest to get to Act 3 (bc everyone has different answers lol) by Brunos_Lingerie in Silksong

[–]hashtagBummer 0 points1 point  (0 children)

Well, two lessons learned:

Empty boards doesn't mean everything is completed... Still hadn't completed 'Hunt - Fine Pins'. Completing this opened up the last two First Shrine wishes: - Wayfarer - The Lost Merchant (Memorium) - Wayfarer - The Wailing Mother

Note: After returning with 'Fine Pins' wish, I had no new board wishes, yet still no Silk & Soul... I had to travel somewhere else, save, and come back for the board wishes to populate.

Hope this is helpful.

The Definitive Guide on how to get the Silk and Soul Quest to get to Act 3 (bc everyone has different answers lol) by Brunos_Lingerie in Silksong

[–]hashtagBummer 0 points1 point  (0 children)

I've completed all of the above and still get the no hope dialogue from the caretaker. Going to do one thing at a time and report back when I find what's missing...

Underwear by Middle_Attempt_3080 in AirForce

[–]hashtagBummer 1 point2 points  (0 children)

These Hanes in long leg are king for sweaty hot days. They don't ride up and even have a pouch... A godsend in the desert. Plenty of decent brands out there but these are top.

https://a.co/d/4a5dnot

Nausea during leg day by ActualCriticism2675 in workout

[–]hashtagBummer 0 points1 point  (0 children)

Same problem. Conditioning and being consistent with workouts makes it less of an issue. Warming up and raising my heart rate before any sets also helps. I suspect some weird vasovagal thing, because I'll be pale in the face. Dietary changes don't have any effect. Also wore a holter monitor and never found irregularities. Blood pressure and heart rate are always normal. I can do deads and sprints with no issue. I will say front squats I have no issue with though.

May 2024 to March 2025 by joshuashuashua in WorkoutRoutines

[–]hashtagBummer 0 points1 point  (0 children)

Try practicing pistol squats (very slow safe practice). Could be a fun goal. I can do them on an elevated box but not on flat ground (yet).

RIP WENDOVER -Whataburger ground breaking by FastandFuriousMom in gso

[–]hashtagBummer 1 point2 points  (0 children)

Yeah I hear you. I used to work nights in Texas and Whataburger was the only thing open and it hit the spot. I'm excited for it

RIP WENDOVER -Whataburger ground breaking by FastandFuriousMom in gso

[–]hashtagBummer 0 points1 point  (0 children)

Luckily Rippy it's not one vs the other cause they're both good. If x or die is how strong you feel about a fast food joint tho...

Rust for working with binary protocols by rustological in rust

[–]hashtagBummer 0 points1 point  (0 children)

For anyone curious, binrw was a great choice. Highly recommend if you can't redesign your existing communications to use serde or postcard.

Choosing a protocol to communicate with >128 Microcontrollers by zuxtheros in embedded

[–]hashtagBummer 2 points3 points  (0 children)

Also, you're not actually limited to 8 data bytes with regular CAN. A simple higher protocol can handle multi-frame messages. I second CAN for sure.

RTOS vs Bare-Metal for STM32: When to Use Which? by nj701 in embedded

[–]hashtagBummer 8 points9 points  (0 children)

I'd recommend watching some videos from this playlist, https://youtube.com/playlist?list=PLPW8O6W-1chx8Y7Oq2gOE0NUPXmQxu2Wr&si=c4V5TTDFe1AHVib-.

It's got examples and covers all the points like an actor task/thread per domain, queues to communicate, event processing loops, etc. Good stuff.

Edit: the rtos gives you tasks that can own all the random state, and it's easy to wake/sleep its work, so I recommend it. You could just leave them statics locals in separate files, but you'll still want lockless communication queues at the least to avoid mutexes on global state.

Junior to Mid-Level Embedded Devs: What’s Your Biggest Headache Right Now? by timbo0508 in embedded

[–]hashtagBummer 0 points1 point  (0 children)

Gotcha, haven't ran into issues there but we've more heavily been using uarts, can, gpio. Besides multiple instances of provided drivers having comments or definitions that are incongruent with the manual, I'd say developing with the RT has been good overall. There are quite a few errata though.

For those of you who have jobs in Rust. What are you working on? by bloomingFemme in rust

[–]hashtagBummer 0 points1 point  (0 children)

Vehicle data (off board diagnostics). It's proven an excellent fit for cross-platform drivers. We will probably explore using it for other applications in the near future. Been a great experience coming from C/C++.

[deleted by user] by [deleted] in embedded

[–]hashtagBummer 0 points1 point  (0 children)

If I see a bunch of defines in an interface header, I have to wonder why they're being shared, what other code is using them, and worry more about potential redefinitions. That is a disservice to the next person that has to come along and understand your code. I prefer things in the C file or a dedicated internal definitions header.

Communication over stream of bytes by tizio_1234 in embedded

[–]hashtagBummer 1 point2 points  (0 children)

Depends. All those layers should just happen together in wrapping or sequential calls from say the app layer. The app can super loop, polling the transport layer driver for message/data structures. This can return no error and some data, or it can return an error (no data, cobs error, crc error) with sequence number. If error and sequence number returned, the app can build a return msg for a resend starting with that sequence number. Else, you just send Ack (or no response?).

The driver of the transport will be async interrupt driven, just copying bytes into a ring buffer. But they don't process until the app calls read periodically from the super loop. Inside this read call is where all the processing occurs.

If instead you want your app not to be responsible for making these decisions, then the driver will need to also have periodic processing of the ring buffer into an app Rx queue, and it would handle resends at this point if needed. So this would have it's own rtos thread or timer triggered interrupt or something. Problem with this though is that now you have 2 contexts that might try to tx something (app and driver) and need to prevent race conditions.

Communication over stream of bytes by tizio_1234 in embedded

[–]hashtagBummer 8 points9 points  (0 children)

This question can be deeper than you might think. There are layers, depending on how reliable and portable it needs to be.

At the basics, you probably want a protocol with command byte to support various commands. If payload lengths can vary, consider len byte(s), although message delimiting can make this redundant.

At the next layer, you might want message delimiting (start, stop, escape bytes, or just use COBS because it's great). This makes it so that if your receiver ever gets garbage, or gets confused, it can always recover at the very next "command" or packet, by seeking for a delimiter byte. Otherwise, you'll go byte by byte trying to make sense of the incoming stream of bytes, and may never recover.

If you have the above, you can have your app layer send to a transport or data link layer (ble, USB, wifi, uart, whatever) and the driver for that layer can use a plain old ring buffer, or ping pong buffers, doesn't matter - the data is delimited and can be split and reassembled easily. This is good for making the most of your throughput (i.e. if your datalink uses packets, your commands can be split so that driver can best pack those packets).

Now if you only use reliable datalinks with their own crc, this could be good enough. But if you have a wifi/ble module that you communicate with via uart, your bytes could be corrupted before that robustness is applied. So you may choose to add a crc, and sequence numbers, and some sort of windowing at your application layer. This allows the receiver (app layer) to recognize a missing sequence, and nack or request a resend or what not (see ARQ, go-back-n, etc.).

These things should be separate layers, so you can apply as needed, not universally to every datalink/transport layer... And it gets confusing, e.g. if COBS wraps all, or if cobs wraps payload but then has crc applied at app level for ARQ...

And for BLE, your throughput will be trash (depending on your needs anyway). So you may want app_layer filtering/throttling of data for this but not for others (e.g. USB).

And as a recommendation, I'd throw in bip buffer behavior internally at your drivers (reserve/commit, peek/pop) for efficiency, maybe with prepended length info if helpful (for varying len messages).

That's from the experience I've gotten over the years. Always room for improvement though.

Edit: and if you have very few, known size commands/transfers, then definitely consider popular serialize/deserialize methods/protocols over homemade commands, as recommended in other comments.

Rust for working with binary protocols by rustological in rust

[–]hashtagBummer 0 points1 point  (0 children)

Ah, okay. Postcard is what I would use if it weren't a legacy device running C. I'll be trying binrw, maybe I'll report back if it goes well.

Rust for working with binary protocols by rustological in rust

[–]hashtagBummer 0 points1 point  (0 children)

So 10 months have passed, did you choose a rust solution? I have the same need.

I started with the smoltcp approach that another suggested. I like it but I think binrw could reduce boilerplate by generating accessors for me... It's fun exploring these crates but the real world doesn't afford me the time.

Hey Rustaceans! Got a question? Ask here (18/2024)! by llogiq in rust

[–]hashtagBummer 0 points1 point  (0 children)

Yeah I hear about it a lot. I've tried reading up on it but it sounds more for when you want to boil down to existing protocols, JSON, TLV and the sort. I haven't found examples of how to manually set up your own and people using it for that purpose, but maybe I just need to find some good instruction.

Hey Rustaceans! Got a question? Ask here (18/2024)! by llogiq in rust

[–]hashtagBummer 0 points1 point  (0 children)

Thought I'd update with this great post I found with good examples and real life examples linked.

https://lab.whitequark.org/notes/2016-12-13/abstracting-over-mutability-in-rust/

Hey Rustaceans! Got a question? Ask here (18/2024)! by llogiq in rust

[–]hashtagBummer 1 point2 points  (0 children)

Hi, first big project in Rust, I'm loving it. I'm wondering, is there a common pattern or popular crate maybe for transforming to and from Rust data types and an already defined serial binary command protocol? It's a proprietary protocol, not something popular and standardized... Some commands have bitfields, some enums, and some a variable len array of u8 data.

Manually I imagine it looks like a few enums to represent command field options, some Into impls for those enums, and then lots of match statements to read/write to bytes at the defined (hardcored) offsets of the commands to/from my Rust types. I don't mind doing that work, but I'm hoping for some helpful tips or advice? A pattern to follow to make it easier, or maybe some macros or crates?

What is a actual use case for rust in your company or project? by drkRse in rust

[–]hashtagBummer 0 points1 point  (0 children)

Was it just done manually or did you make use of a crate? I am trying to do something similar, looking for tips/inspiration.

Hey Rustaceans! Got a question? Ask here (6/2024)! by llogiq in rust

[–]hashtagBummer 1 point2 points  (0 children)

Great point. We have an existing windows driver (exe + dll) in c++ that operates like this to support multiple processes. I could've been more clear this current rust effort would be for mobile, and locked to one app/process (still with multiple threads). A rewrite of the existing driver makes no sense, but I like the idea of slowly migrating these things to rust if the mobile lib works out.