Author Topic: Any ideas on how to time or otherwise restrict firmware to allow evaluation?  (Read 169 times)

0 Members and 1 Guest are viewing this topic.

Offline ricko_ukTopic starter

  • Super Contributor
  • ***
  • Posts: 1116
  • Country: gb
Hi,
I have made some PCBs with and written some related firmware for a client. They have been running late with a payment but being a new client and also having paid all other invoices on time and being easy to work with, I don't want to make a big deal out of it. But, at the same time, I want to make sure they clear the invoice asap.

So would like to send them downloadable code (not the source code) via email so they can check it works exactly as per new agreed specs (just in case that is the reason why they might have delayed the payment) but also so that it works only for a limited time. Then I can send them the fully unlocked code when the invoice is cleared.

I am using an STM32 (on custom PCB I designed for them). Any suggestions on the simplest way to do that without wasting much time writing a lot of code? Perhaps there are some freeware libraries I can use?

Thank you
 

Offline globoy

  • Regular Contributor
  • *
  • Posts: 237
  • Country: us
Been there, done that  ;D

Do you have a loop anywhere (e.g. a main evaluation loop)?  If so just get the HAL ticks somewhere in it and when they cross some limit (your timeout) go into an infinite loop (maybe tickling the WDT if you have it enabled).  They have to power cycle to run it again.  You could get fancier (if you wanted) and store some a count incremented each time the device came out of reset to a persistent storage (or some kind of non-volatile memory) and immediately enter an infinite loop if that count was higher than a number of times you wanted them to be able to use try the device out.

I had a client who always paid late (but he eventually paid).  We got to a point in the project where we had to make a bunch of units for testing and demo purposes.  I could actually see him trying to sell them and running with the prototype code so I plastered things like "Engineering Prototype", "Not for resale" all over the GUI.  It was a successful gambit :-)
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf