{% extends "gridder_base.html" %} {% load i18n %} {% block extrahead %} {% endblock %} {% block extrabody %} {% endblock %} {% block content %}
{% blocktrans with object.completed as completed %} Payment completed on: {{ completed }} {% endblocktrans %}
{% else %} {% if object.is_ready_for_payment %} {% block payment_method %} {% endblock %} {% else %}{% blocktrans %} This order is expired. It will accept an incoming payment made earlier, but new payment cannot be initialized. Please make a new order if necessary. {% endblocktrans %}
{% endif %} {% endif %} {% if object.status == object.STATUS.NOT_VALID %}{% blocktrans %} This order could not be processed as it is not valid. Please contact with customer service. {% endblocktrans %}
{% endif %}


British Columbia population estimates and projections to 2020 and 2030. Population projections estimated a 6.6% growth in the pediatric population by 2020 and 17.2% growth by 2030
Source: BC Stats PEOPLE 35.


While styling of HTML, attribute id & class plays main role.
The HTML class attribute is used to specify a class for an HTML element.
The HTML id attribute is used to specify a unique id for an HTML element.
The id
attribute specifies a unique id for an HTML element. The value of the id attribute must be unique within the HTML document.
The id
attribute is used to point to a specific style declaration in a styling element.
#
to indicate this css is for id.#p1 { background-color: yellow; }
Text line with id="p1"

Text line with id="p1"
Text line with no specific id
The class
attribute used to specify a class for an HTML element
Multiple HTML elements can share the same class.
.
to indicate this css is for class..p2 { color: #3f51b5; font-size: 2rem; }
Text line with class="p2"

Text line with class="p2"


Chris Cuomo is often painful to watch, one of the dumbest voices on Cable News, his commentary is often lacking. He is also known for his angry outbursts. One time he yelled at someone who implied that he was a failson with a clever godfather reference. The fact that he has a cable show might seem like a miracle to those who are unfamiliar with his last name. You see, Chris Cuomo belongs to one of the most influential political families in the state of New York, which includes both governor Andrew Cuomo, as well as governor Mario Cuomo. These familial connections helped him land a job at CNN, where he earns $6 million anually. He also has a net worth of over $12 million.
Don Lemon, though less bad then Cuomo, is still one of the worse cable hosts out there. Despite his mediocrity, Lemon is worth over $10 million, and has an annual salary of $4million.
One of the more sane voices in establishment media, Zakaria's reporting on international issues is usually good (except when it comes to Russia and Venesuela), but some of his segments on domestic issues can be a bit one sided.
Lester Holt, host of NBC nightly news is known for being uncontroversial, not stirring the pot too much. Despite being so boring, he has a net worth of over $25 million, and a salary of $4 million a year.
Chris Matthews is most known for being hyperbolic in comparing Sanders (a Social Democrat) to socialist dictators. He claimed that Sanders was going to "kill [rich] people in Central Park". Of course it seems rediculous to most people, but Chris Matthews is rich himself.
Maddow is known for being an MSNBC host that always kept talking about Russian Agents and the US election. She is often criticised for being conspiratorial. She is worth more than $20 million, and has an annual salary of $7 million
Tucker Carlson is arguably one of the most influential Cable News presenters. Though Carlson likes to portray himself as a man of the people, he is in fact, an elitist. His stepmother was a wealthy heiress to the Swanson frozen food empire. He is currently worth over $20 million, and has a salary of $6 million a year.
Laura Inghram is the host of the Inghram Angle, a popular news show on FOX. She is currently worth over $70 million with an annual salary of $15 million.
Jeanine Pirro, host of FOX's Justice with Judge Jeanine. She is worth over $12million and has an annual salary of $3million.
The Five is a show on FOX news that comprises of Greg Guttfeld (worth over $5 million), Dana Perino (worth over $6 million), Jesse Watters (worth over $5million), and Juan Williams (worth over $2 million) These people have some of the dumbest takes on the planet, yet they are worth millions.
Though many of the talking heads on local news don't get paid as much as those in the national media, they are often forced to stick to a script due to the fact that they're owned by one company in most cases.
is the corporation that currently owns the majority of local news stations


Welcome to Fuel
Fuel is a simple, flexible, community driven PHP 5 web framework. It was born out of the frustrations people have with the current available frameworks and developed with support from a community of developers. Fuel is extremely portable, works on almost any server and prides itself on clean syntax.
Getting started
- Step #1: Download
- Step #2: Install
- Step #3: Create sexy code
Optional: Quick Installation
If you value your time and want to get things up and running in seconds instead of minutes you can use our quick installer. This will be a single line you write into CLI which gives you a very basic version of Oil. From there you can create new full applications of Fuel.
$ curl get.fuelphp.com/oil | sh cd Sites/ oil create blog
This will create a new Fuel "project" or application for you to start working with. If you were to then run some scaffolding you'd have a fully functional blog in minutes.
For now this requires Git, but that should be a simple installation and the benefits really outweigh the effort.


Are you sure that is the address for your TeamCity server? (tinker with your address bar to change the address temporarily)
Have you specified valid TeamCity credentials?
(your TeamCity username and password will do)
Have you created your fork and configured your TeamCity to allow your monitor to use the TeamCity services?
Fork your own tc-radiate from here and open your fork's Github Pages, so that there is your username in this hostname here: ''. Then go to Administration > Diagnostics > Internal Properies and add an 'Internal property' of:
rest.cors.origins=http://,https://
(if that page doesn't allow you to edit internal properties, see TC documentation).
Alternatively:
Running the monitors from your local filesystem?
See this section of the Project's Readme.
Just trying out? Or no admin rights to TeamCity? Use a browser plugin to disable Cross-Domain security. (But if you do, don't visit any other pages with that browser process!)
(...or, if you're really desperate, host your own 'security-stripping' proxy)
🔌 Connection to TeamCity seems to have gone down :(
🐛 Can't get data from TeamCity. Might be a bug :(
Error:
Last checked on
There's no builds!? Better crack on with some work!


Company profile - Canadian Company Capabilities
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
Crowe Soberman LLP
Legal/Operating Name:
Crowe Soberman LLP
Alternate Name:
Crowe Soberman Inc.
Mailing Address:
1100-2 St Clair Ave ETORONTO, Ontario
M4T 2T5
Location Address:
1100-2 St Clair Ave ETORONTO, Ontario
M4T 2T5
Tel.:<PHONE_NUMBER>
Tel.:<PHONE_NUMBER>
Fax:<PHONE_NUMBER>
Logo
Company Profile
Crowe Soberman LLP (formerly Soberman LLP, Chartered Accountants) is one of the premier, full-service, public accounting firms in Ontario. We provide clients with exceptional professional services desgined to meet their special and ongoing needs.
We are proactive and forward-thinking. We work closely with our
clients in the areas of Audit, Advisory, Tax, Business
Valuation, Claims Valuation, Corporate Reorganisation, HR Consulting, Personal
Insolvency, Succession Retirement & Estate Planning.
Crowe Soberman LLP is an independent member of Crowe Horwath International.
Crowe Soberman LLP is currently ranked as one of the top fifteen
accounting firms in Canada. We take pride in the quality and
timeliness of the services we provide to our clients.
Members of:
CPA Ontario
CPA Canada
Canadian Tax Foundation
Crowe Horwath International
Full profile
Full profile
Contact information
Company description
Product / Service / Licensing
- audit, review and compilation engagements based on client
needs
- assistance with the development of systems tailored to
provide management with timely, accurate and cost-effective
financial information
- bookkeeping
- payroll preparation
- asset management
- cash flow projections
General Tax Services include:
- Personal Tax - income tax return preparation and e-filing,
tax planning and representation to taxation authorities.
- Corporate Tax - corporate tax planning, income tax return
preparation and e-filing, capital tax compliance, payroll tax
compliance, commodity tax, R&D tax credits and representation
to taxation authorities.
- Estates & Trusts - income tax return preparation and e-
filing, tax planning and compliance and planning for the
orderly distribution of assests.
- Matrimonial Matters (Divorce Settlement, Spousal Support) -
determination of net family property for purposes of
equalization, calculation of income for purposes of support and
tax efficient approaches to settlement.
- Tax and Corporate Reorganization - Valuations for purposes of
family business/estate planning, valuations for utilization of
available tax exemptions and dealing with Canada Customs and
Revenue Agency
- Shareholder and Partnership Agreements - appropriate
valuation clauses, dispute resolution mechanisms and valuation
for purposes of buy-out
- Mediation and Arbitration - dispute resolution alternatives
and dispute resolution of financial issues
- Expert Testimony
- expert testimony
- wrongful dismissal proceedings
- insurance quantum analysis
- identification and procurement of admissible evidence
- professional negligence claims
- criminal and civil proceeding
Specialized areas of Litigation Support Services include:
- Alternative Dispute Resolution - acting as neutral
independent Arbitrator on financial matters, and advising one
party on financial matters
- Professional Malpractice - assisting counsel with application
of Generally Accepted Accounting Principles and Generally
Accepted Auditing Standards related to Accounting Malpractice
suits, calculation of financial impact of misapplied accounting
standards, and calculation and rebuttal of economic damages
- Business Interruption - analysis of insurance coverage to
determine potential economic damages claim, analyzing and
rebutting economic damages claims prepared by other parties,
and investigation of potentially fraudulent economic damages
claims
- Intellectual Property - patent infringement, trademark
infringement, theft of customer list, determination of
Defendant's sales and profits of allegedly infringed products,
analysis of financial and market data to determine economic
damages, and reasonable royalties and other damages
- Breach of Contract - calculation and potential rebuttal of
economic damages
- Construction - calculation of economic damages related to
construction delay claims, and construction project cost audit
range of services designed to maximize recovery by creditors,
or minimize the loss and disruption resulting from financial
reorganization or insolvency. Our services include:
- Recovery Assistance to Creditors
- Financial Reorganization
- Receivership Assignments
- Bankruptcy Services
- Acquisitions and Divestiture Support
- Proposals
- personal financial planning
- design and implementation of accounting systems
- development and/or refinement of business plans
- shareholder aggreements
- budgeting
- financial projections
- acquisitions and sales of businesses
- business reorganizations
- development of loan arrangements
- Loss and Damage Quantification - calculation of loss of
income and future care costs, calculation of income replacement
benefits, and calculation of financial damages
- Professional Liability & Negligence - accountants'
malpractice claims, and accoutants' liability and disciplinary
actions
- Fraud & Forensic Accounting - tracing cash and other key
assets, reconstruction of financial information, recovery of
funds, and integrity Risk Management
planning, valuation and eldercare.
- Personal Wealth Enhancement - planning of personal finances
and compensation, wealth preservation, and succession planning
- Corporate Tax Services - structuring corporate financing,
reorganizations, and other day to day transactions to minimize
tax costs
- International Tax Services - wide optimization of world tax
for businesses and individuals in the global economy
- Acquisitions and Divestiture Support - planning business
purchases and sales, and structuring of mergers and spin-offs
- Corporate Finance - after-tax financing and private and
public offerings
- Business Valuations & Litigation Support - integrating tax
considerations in valuation and litigation assignments
- Commodity Taxes - compliance and planning for GST and retail
sales tax
- Estate Planning
- Retirement Planning
Technology profile
efficiency in all our files.
Market profile
Alliances:
- Technology
Geographic markets:
Export experience:
- United States
Sector information
Distribution of employees:
140Testimonial:
See what our clients have to say about Crowe Soberman at www.crowesoberman.com.Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
Contacts
Contact information
Description
Company description
Products, services and licensing
Product / Service / Licensing
- audit, review and compilation engagements based on client
needs
- assistance with the development of systems tailored to
provide management with timely, accurate and cost-effective
financial information
- bookkeeping
- payroll preparation
- asset management
- cash flow projections
General Tax Services include:
- Personal Tax - income tax return preparation and e-filing,
tax planning and representation to taxation authorities.
- Corporate Tax - corporate tax planning, income tax return
preparation and e-filing, capital tax compliance, payroll tax
compliance, commodity tax, R&D tax credits and representation
to taxation authorities.
- Estates & Trusts - income tax return preparation and e-
filing, tax planning and compliance and planning for the
orderly distribution of assests.
- Matrimonial Matters (Divorce Settlement, Spousal Support) -
determination of net family property for purposes of
equalization, calculation of income for purposes of support and
tax efficient approaches to settlement.
- Tax and Corporate Reorganization - Valuations for purposes of
family business/estate planning, valuations for utilization of
available tax exemptions and dealing with Canada Customs and
Revenue Agency
- Shareholder and Partnership Agreements - appropriate
valuation clauses, dispute resolution mechanisms and valuation
for purposes of buy-out
- Mediation and Arbitration - dispute resolution alternatives
and dispute resolution of financial issues
- Expert Testimony
- expert testimony
- wrongful dismissal proceedings
- insurance quantum analysis
- identification and procurement of admissible evidence
- professional negligence claims
- criminal and civil proceeding
Specialized areas of Litigation Support Services include:
- Alternative Dispute Resolution - acting as neutral
independent Arbitrator on financial matters, and advising one
party on financial matters
- Professional Malpractice - assisting counsel with application
of Generally Accepted Accounting Principles and Generally
Accepted Auditing Standards related to Accounting Malpractice
suits, calculation of financial impact of misapplied accounting
standards, and calculation and rebuttal of economic damages
- Business Interruption - analysis of insurance coverage to
determine potential economic damages claim, analyzing and
rebutting economic damages claims prepared by other parties,
and investigation of potentially fraudulent economic damages
claims
- Intellectual Property - patent infringement, trademark
infringement, theft of customer list, determination of
Defendant's sales and profits of allegedly infringed products,
analysis of financial and market data to determine economic
damages, and reasonable royalties and other damages
- Breach of Contract - calculation and potential rebuttal of
economic damages
- Construction - calculation of economic damages related to
construction delay claims, and construction project cost audit
range of services designed to maximize recovery by creditors,
or minimize the loss and disruption resulting from financial
reorganization or insolvency. Our services include:
- Recovery Assistance to Creditors
- Financial Reorganization
- Receivership Assignments
- Bankruptcy Services
- Acquisitions and Divestiture Support
- Proposals
- personal financial planning
- design and implementation of accounting systems
- development and/or refinement of business plans
- shareholder aggreements
- budgeting
- financial projections
- acquisitions and sales of businesses
- business reorganizations
- development of loan arrangements
- Loss and Damage Quantification - calculation of loss of
income and future care costs, calculation of income replacement
benefits, and calculation of financial damages
- Professional Liability & Negligence - accountants'
malpractice claims, and accoutants' liability and disciplinary
actions
- Fraud & Forensic Accounting - tracing cash and other key
assets, reconstruction of financial information, recovery of
funds, and integrity Risk Management
planning, valuation and eldercare.
- Personal Wealth Enhancement - planning of personal finances
and compensation, wealth preservation, and succession planning
- Corporate Tax Services - structuring corporate financing,
reorganizations, and other day to day transactions to minimize
tax costs
- International Tax Services - wide optimization of world tax
for businesses and individuals in the global economy
- Acquisitions and Divestiture Support - planning business
purchases and sales, and structuring of mergers and spin-offs
- Corporate Finance - after-tax financing and private and
public offerings
- Business Valuations & Litigation Support - integrating tax
considerations in valuation and litigation assignments
- Commodity Taxes - compliance and planning for GST and retail
sales tax
- Estate Planning
- Retirement Planning
Technology
Technology profile
efficiency in all our files.
Market
Market profile
Alliances:
- Technology
Geographic markets:
Export experience:
- United States


--- layout: page title: Home tagline: My personal page and portfolio. description: My personal page and portfolio. group: navigation group_sort: 0 permalink: / extra_css: /assets/css/index.css --- {% include JB/setup %}


-
Q: What did the cat say when he lost all his money?- A: I'm paw!
-
Q: Why don't cats like online shopping?- A: They prefer a cat-alogue.
-
Q: Why are cats so good at video games?- A: Because they have nine lives!
-
Q. How do you know when your cat's done cleaning herself?- A. She's smoking a cigarette.
-
Q: What do you get if you cross a cat with a dark horse?A: Kitty Perry


COM2107 Logic in Computer Science
| Summary |
This module introduces the foundations of logic in computer science. The first part introduces the syntax and semantics of propositional and
predicate logics, natural deduction, and notions such as soundness, completeness and (un)decidability. The second part covers applications in
computer science and beyond, such as automated reasoning and decision procedures, modal and temporal logics for the verification of computing
systems, and type systems for programming languages. |
| Session |
Spring 2018/19 |
| Credits |
10 |
| Assessment |
- Assessment will be 100% Formal Examination
|
| Lecturer(s) |
Professor Georg Struth |
| Resources |
|
| Aims |
This unit aims to:
- Introduce the standard logics in computer science and their associated proof systems and the main applications of logic in computer
science;
- Enhance analytical and logical skills in reasoning abstractly (about computation and computational modelling);
- Provide a thorough grounding for theoretical courses at more advanced levels.
|
| Objectives |
By the end of the unit, a candidate will be able to:
- Be able to perform proofs in propositional, predicate and modal logics (aims 1 and 2);
- Explain the principles of automated theorem provers, such as the DPLL and the resolution method (aims 1 and 2);
- Be able to apply formal languages and reasoning to the design and verification of computing systems (aims 1 to 3).
|
| Content |
- syntax and semantics of propositional and predicate logic
- natural deduction systems for these logics
- applications of logic in computing and systems engineering (e.g. automated and interactive theorem proving, basics of model checking, types in programming)
|
| Teaching Method |
- 2 formal lectures plus 1 exercise/tutorial session per week.
|
| Feedback |
Weekly feedback is provided in the exercise/tutorial sessions. |
| Recommended Reading |
Course lecture notes and the literature mentioned in these.
|
|


--- layout: page title: "About" description: "David A McClain, the enigma" header-img: "img/about-bg.jpg" ---
Father, husband. Engineering at Stitch Fix. Figuring out how to help people be awesome. Writing about some of that from time to time.
More details at hire.davidamcclain.com and the links below.


Cryptocurrencies
USD/BTC
USD/ETH
USD/LTC
USD/XRP
USD/ZEC
USD/POT
Foreign Exchange
🇬🇧 USD/GBP
🇨🇦 USD/CAD
🇦🇺 USD/AUD
🇯🇵 USD/JPY
🇨🇭 USD/CHF
🇪🇺 USD/EUR
Find the values of currencies all over the world! CFNT will provide exchange rates, detailed information about specific currencies and news coverage on the selected currency.
Select a foreign currency and click submit to show live exchange rate information.
Select a cryptocurrency and click submit to show live exchange rate information.


vim-pandoc
provides facilities to integrate Vim with the pandoc document converter and work with documents written in its markdown variant (although textile documents are also supported).
vim-pandoc
’s goals are 1) to provide advanced integration with pandoc, 2) a comfortable document writing environment, and 3) great configurability.
vim-pandoc
doesn’t provide syntax support. The user needs to install vim-pandoc/vim-pandoc-syntax alongside it (see below). The reason for this is we have found cleaner to keep the bug tracking of the syntax file and the rest of the system separate.:Pandoc
command, which can accept any argument pandoc takes, both in regular vim and in neovim.pandoc
is a filetype plugin, but it can also attach itself to different filetypes, like textile or restructuredText. The user is not limited to use pandoc with markdown.The plugin follows the usual bundle structure, so it’s easy to install it using pathogen, Vundle or NeoBundle.
The most recent version is available at github. For those who need it, a tarball is available from here.
For Vundle users, it should be enough to add
Plugin 'vim-pandoc/vim-pandoc'
to .vimrc
, and then run :PluginInstall
.
It is very strongly recommended that all users of vim-pandoc
install vim-pandoc-syntax
too:
Plugin 'vim-pandoc/vim-pandoc-syntax'
fmoralesc is the project maintainer, and he tries to solve all issues as soon as possible. Help is very much appreciated, in the form of bug reports, fixes, code and suggestions.
If you have a problem, it is better to open a issue in the issue tracker at github. Please state the problem clearly, and if possible, provide a document sample to reproduce it.
Join the chat at https://gitter.im/vim-pandoc/vim-pandoc


Video Conferencing
Menu
How to Use?
View Logs
Bug Reports
Get App's Code
Open Room
Join Room
Auto Open Or Join Room


{% extends "base_site.html" %} {% load markup sitevars recordingtags tagging_tags %} {% block title %}performers{% endblock %} {% block body %}id="performers"{% endblock %} {% block content %}
These are our performers in order of addition to RareTunes. Only performers with recordings available are listed. You can also see a full list of performers.
{% else %}Where possible, the permission of performers has been obtained before making these recordings available. If you have any questions about a recording, please contact us.
No performers found.
{% endif %}


Toggle navigation
Study That Shit
Home
About
Contact
Sign In
Questions? Comments? Concerns? Queries? Kittens?
Contact Us!
Email us at
<EMAIL_ADDRESS>Copyright 2015 - YAAAS Labs


A Big Bad brings the captured heroes to his/her lair — and frequently the very heart of it. For bonus points, sending all the guards away so he can talk to the hero in private.
Yeah, this is always a smart idea. Bring your enemy deep into the control center of your base, and dismiss the guards. There's no way he can mess things up from there...
Any simpler solution seems to be out of the question, after all, for some reason, the Big Bad wants them alive.
Compare Kneel Before Zod. When the heroes want or otherwise allow this, it's Captured on Purpose.
Not to be confused with Bathe Her and Bring Her to Me. Except when it is.
Examples:
- Ken in Ga-Rei. He even lampshades it.
Ken: (Pictures a worried princess) Am I the maiden in distress?
- What is Aizen's first thing to do when he kidnaps Orihime? Show her his ultimate weapon while also making sure they're the only two in the room! It doesn't take long for Orihime to decide that she will destroy it, but being held up in an unidentified part of the lair might get in the way.
- Mobile Suit Gundam Age: What happens when Kio is captured? He's not sent to prison, but the center of the enemy's frigging capitol city. At least in this case he's handcuffed and followed by guards.
- Hitotsukabuto does this to the boys of Cell 4 in Apocalypse no Toride after they return to the prison from the outside, zombie infested world.
- Double-subverted in the ABC Warriors comic book's 'Hell-Raiser' arc- The Big Bad brings the captured heroes to his spaceship's bridge, lampshades the trope, and then immediately springs his prepared Death Trap on them, having assumed in advance that they'd make it up there sooner or later anyway. Doubly subverted in that the heroes manage to escape, and naturally, they eventually get back to the bridge and crash the ship.
- It happens to Spidey a lot in Ultimate Spider-Man
- In the last part of Pretty Soldier Simpson Moon, a The Simpsons/Sailor Moon mash-up, Queen Beryl captures Lisa (who is trying to break into her base) using a force field and takes her to her throne room. Lisa correctly points out that this means she's been taken exactly where she wants to go, instead of being weakened by cold and having to fight her way through guards.
- Star Wars:
- A New Hope: Taking Leia on board the Death Star after she was captured, although this was necessary for Tarkin's interrogation method.
- The Empire Strikes Back: Presumably where Luke was going to go when he met the Emperor.
- Return of the Jedi: The Emperor has Vader bring Luke to his throne room inside the new Death Star. Compounded by sending all the Emperor's usual guards out of the room. The Emperor really needs to see Luke in person to make a new Sith of him, and plans to blast his morale by showing him the Rebel fleet getting trashed; on the other hand, that's the same young man who was responsible for wiping out the last Death Star... maybe showing him around the new one isn't such a great plan.
- The Force Awakens: After Kylo questions Rey and reports, Supreme Leader Snoke says it almost verbatim ("Bring her to me!")
- James Bond:
- Goldfinger. After capturing Bond in Europe, Goldfinger has him brought to his horse ranch in the U.S., the control center for Operation Grand Slam.
- You Only Live Twice. Bond is captured while impersonating a SPECTRE astronaut and brought to the control center on Blofeld's orders.
- Diamonds Are Forever. Bond arranges to be captured by Blofeld on his oil rig headquarters. Blofeld has him brought into his office and later the command center.
- The Spy Who Loved Me. A variation - after capturing Bond Girl Major Amasova, Stromberg takes her to his headquarters, "Atlantis" to gloat over her and stick her in a skimpy outfit. Bond later follows and saves her.
- Moonraker. Happens to Bond and his Bond Girl, but it was probably more the henchmen's idea, since that's just where the Villain happened to be.
- GoldenEye. Bond, having been captured, is brought into the villain's control room. Just to make sure nothing can go wrong, this room also contains copious supplies of aviation fuel and supercooled liquids.
- In Star Trek: First Contact, the Borg Queen has Data brought to the heart of the Enterprise. Of course, she has a little more than interrogation in mind if you know what we mean, but it all works out pretty well for the crew as a result.
- Part of Captain America's plan to infiltrate Hydra's HQ in the Captain America: The First Avenger movie.  This of course begs the question why he didn't just come through the window with them rather than bother with a frontal assault and getting intentionally captured.
- Star Wars Legends:
- Downplayed by Admiral Karath and Darth Malak in Knights of the Old Republic, though. (Which is something of a surprise, for them.) While the heroes did get taken onto Karath's flagship, they were dumped on the prison level, and the higher-ups went down to interrogate them. Not that it helped, naturally.
- In the X-Wing Series, Isard puts Corran in her torture chambers on Coruscant, stripped naked. Though she didn't dismiss her guard, and said torture chambers were quite expansive. He only escaped when she put him with the less guarded prisoners.
- In Dark Empire, Palpatine's at it again with Luke. It works this time - temporarily.
- Jacen in New Jedi Order is captured by the Yuzzhan Vong and taken to Coruscant, which they have made their base.
- In Legacy of the Force, Ben is abducted, taken aboard the Anakin Solo, stripped to shorts, tortured, and seduced by Tahiri. It's particularly squicky when she's got her hand in his shorts, igniting his lightsaber, and calls him a "big strong Jedi".
- Happens more than once in Animorphs; in the finale, it's part of a plan on the Animorphs' part.
- This trope is mentioned several times throughout the Harry Potter series.
- In a reversal of roles, Jesus Christ in Left Behind has Michael the archangel bring the captured Antichrist and the False Prophet before him to kneel before Him and confess that He is Lord.
- Justified in The Lord of the Rings. While Saurman could have just told the Uruk-Hai to kill the hobbits or worse, doing so would most likely lead to the discovery of the Ring Of Power, thus having them fight among themselves on who gets to keep it instead of bringing it to Isengard. Double justified since, in the animated Rankin-Bass film, that's exactly what the guards at the Torech Ungol gate did over Frodo's mithril coat. The Ring is far more valuable.
- Averted in a Rainbow Magic book. When Rachel and Kirsty let themselves get captured, the goblins initially try to lock them in the dungeon rather than take then to Jack Frost. They have to trick their way into being taken to him.
- Adventures in Odyssey: Gang leader Rodney Rathbone does this with Lucy during the "Darkness Before Dawn" arc.
- In Pokémon Live!, Giovanni instructs Team Rocket to bring him Pikachu alive and unharmed so it can fight MechaMew2. Pikachu refuses to obey them, so Giovanni orders that Ash be captured as well.
- In Cave Story, when the villains capture the protagonist they throw him in "The Labyrinth", which just HAPPENS to contain the engine which keeps the floating island afloat. Apparently, the people who originally made the Labyrinth threw in enough safeguards around the Core that the villains felt they could use the Labyrinth as a prison as well. And since destroying the Core is a nigh-suicidal tactic, the villains don't expect the protagonist to attack it.
- Keep in mind that between you and the Core is a large boulder blocking your path that, without Balrog's help, would be impassable.
- Fallout 3 - The PC is taken to Raven Rock, the Enclave's Capitol Wasteland HQ. Although at first President Eden allows you to come up to talk, Colonel Autumn overrules his orders and wants you shot on sight. But don't worry, all your weapons and items happen to be safe and secure in an unlocked locker in your prisoner cell.
- Mostly averted in Final Fantasy VIII. Our heroes were captured during the assassination attempt on Edea. Instead of doing all that bring him to me crap, Edea has them carted off to a very obscure in the middle of nowhere prison that is a long way away from anything alive. And THEN you get interrogated.
- Always averted in The Legend of Zelda games, because getting captured and dragged before Ganondorf would deprive you of all the fun of breaking into his palace on your own.  Princess Zelda is usually the bait.
- Averted in Dragon Age: Origins, if you get captured by Cauthrien after rescuing Anora you end up in Fort Drakon, which is an actual prison rather than the heart of the villain's power.
- In the "Dangerous Days" arc of Sluggy Freelance, Hereti-Corp uses this trope. Though, in all fairness, none of the people they took prisoner had previously proven themselves to be much of a threat.
- Happens so often in Kim Possible that it might be an unspoken villain tradition.
- The Queen of the Crowns in Galaxy Rangers always wanted the Rangers to come to her or be brought to her. But it's a Justified Trope here. The Rangers were human (or, in the case of Shane and possibly Niko, humanoid), and her lair contained the machine she could use to mash them down for Life Energy.
- Lampshaded in the first episode of Clerks: The Animated Series when Leonardo Leonardo learns that people are still shopping at the Quickstop minimarket instead of his Quickerstop megamall.
Leonardo: Bring this Quickstop to me.Mook: Sir, we can't do that.Leonardo: Bring it to me!Mook: Sir, it's a store. How about we bring you the guys who run it?Leonardo: That will do - for now.


ESP-Modbus¶
Overview¶
The Modbus serial communication protocol is de facto standard protocol widely used to connect industrial electronic devices. Modbus allows communication among many devices connected to the same network, for example, a system that measures temperature and humidity and communicates the results to a computer. The Modbus protocol uses several types of data: Holding Registers, Input Registers, Coils (single bit output), Discrete Inputs. Versions of the Modbus protocol exist for serial port and for Ethernet and other protocols that support the Internet protocol suite. There are many variants of Modbus protocols, some of them are:
Modbus RTU
— This is used in serial communication and makes use of a compact, binary representation of the data for protocol communication. The RTU format follows the commands/data with a cyclic redundancy check checksum as an error check mechanism to ensure the reliability of data. Modbus RTU is the most common implementation available for Modbus. A Modbus RTU message must be transmitted continuously without inter-character hesitations. Modbus messages are framed (separated) by idle (silent) periods. The RS-485 interface communication is usually used for this type.
Modbus ASCII
— This is used in serial communication and makes use of ASCII characters for protocol communication. The ASCII format uses a longitudinal redundancy check checksum. Modbus ASCII messages are framed by leading colon (“:”) and trailing newline (CR/LF).
Modbus TCP/IP or Modbus TCP
— This is a Modbus variant used for communications over TCP/IP networks, connecting over port 502. It does not require a checksum calculation, as lower layers already provide checksum protection.
The following documentation and code requires some familarity with the Modbus technology and its specifics. Refer to Modbus Organization with protocol specifications
Modbus messaging model and data mapping¶
Modbus is an application protocol or messaging structure that defines rules for organizing and interpreting data independent of the data transmission medium. Traditional serial Modbus is a register-based protocol that defines message transactions that occur between masters and slaves. Slave devices listen for communication from the master and simply respond as instructed. The master always controls the communication and may communicate directly to one slave, or all connected slaves, but the slaves cannot communicate directly with each other.
Note
It is supposed that the number of slaves and its register map are known for the Modbus network before start of stack.
The register map of slave devices is usually part of device manual. Slave device usually also allows to configure its short slave address and communication options in the segment.
Modbus protocol allows to map device data using tree types of registers (Holding, Input, Discrete, Coil). The approach is shown on picture below:
Refer to following sections to setup your Modbus slave and master accordingly:
Modbus port initialization¶
The ESP_Modbus supports Modbus SERIAL and TCP ports and its initialization must be done before call to other API. The functions below are used to create and then initialize Modbus master controller interface for Serial/TCP port accordingly:
mbc_slave_init()
mbc_master_init()
mbc_slave_init_tcp()
mbc_master_init_tcp()
The API call uses the first parameter to recognize the type of port being initialized.
Supported enumeration for different ports: MB_PORT_SERIAL_MASTER
, MB_PORT_SERIAL_SLAVE
, MB_PORT_TCP_MASTER
, MB_PORT_TCP_SLAVE
accordingly.
This example code can be easily modified to initialize slave port:
Modbus master API overview¶
The following overview describes how to setup Modbus master communication. The overview reflects a typical programming workflow and is broken down into the sections provided below:
Modbus port initialization - Initialization of Modbus controller interface for the selected port.
Configure master data access - Configure data descriptors to access slave parameters.
Master setup communication options - Allows to setup communication options for selected port.
Master start communication - Start stack and sending / receiving data.
Modbus master destroy communication stack - Destroy Modbus controller and its resources.
Configure master data access¶
The architectural approach of ESP_Modbus includes one level above standard Modbus IO driver. The additional layer is called modbus controller and its goal is to add an abstraction such as CID - characteristic identificator. The CID is linked to the corresponded Modbus registers through the table called Data Dictionary and represents device physical parameter (such as temperature, humidity, etc.) in specific Modbus slave device. This approach allows to isolate upper layer (MESH or MQTT for example) from Modbus specifics and simplify Modbus integration with other protocols/networks.
The Data Dictionary is the list in the Modbus master which shall be
defined by user to link each corresponded CID to its Modbus registers
representation using Register Mapping table of the Modbus slave being
used.
Each element in this data dictionary is of type mb_parameter_descriptor_t
and represents description of one physical characteristic:
Field |
Description |
Detailed information |
|---|---|---|
cid |
Characteristic ID |
The identifier of characteristic (must be unique). |
param_key |
Characteristic Name |
String description of the characteristic. |
param_units |
Characteristic Units |
Physical Units of the characteristic. |
mb_slave_addr |
Modbus Slave Address |
The short address of the device with correspond parameter UID. |
mb_param_type |
Modbus Register Type |
Type of Modbus register area.
|
mb_reg_start |
Modbus Register Start |
Relative register address of the characteristic in the register area. |
mb_size |
Modbus Register Size |
Length of characteristic in registers. |
param_offset |
Instance Offset |
Offset to instance of the characteristic in bytes. It is used to calculate the absolute address to characteristic in the storage structure. It is optional field to cache parameter data and can be set to zero if the parameter not used in the application. |
param_type |
Data Type |
Specifies type of the characteristic.
|
param_size |
Data Size |
The storage size of the characteristic (bytes). |
param_opts |
Parameter Options |
Limits, options of characteristic used during processing of alarm in user application (optional) |
access |
Parameter access type |
Can be used in user application to define the behavior of the characteristic during processing of data in user application;
|
Note
The cid and param_key have to be unique. Please use the prefix to the parameter key if you have several similar parameters in your register map table.
CID and Name |
Modbus register |
Length (bytes) |
Range |
Type |
Units |
Description |
|---|---|---|---|---|---|---|
0 - “Serial_number” |
30000 |
4 |
MAX_UINT |
U32 |
Not defined |
Serial number of device (4 bytes) read-only |
1 - “Software_version” |
30002 |
2 |
MAX_UINT |
U16 |
Not defined |
Software version (4 bytes) read-only |
2 - “Temperature” |
40000 |
4 |
-20..40 |
FLOAT |
DegC |
Room temperature in DegC. Writing a temperature value to this register for single point calibration |
// Enumeration of modbus slave addresses accessed by master device
enum {
MB_DEVICE_ADDR1 = 1,
MB_DEVICE_ADDR2,
MB_SLAVE_COUNT
};
// Enumeration of all supported CIDs for device
enum {
CID_SER_NUM1 = 0,
CID_SW_VER1,
CID_TEMP_DATA_1,
CID_SER_NUM2,
CID_SW_VER2,
CID_TEMP_DATA_2
};
// Example Data (Object) Dictionary for Modbus parameters (Holding registers 0 and 1)
mb_parameter_descriptor_t device_parameters[] = {
// CID, Name, Units, Modbus addr, register type, Modbus Reg Start Addr, Modbus Reg read length,
// Instance offset (NA), Instance type, Instance length (bytes), Options (NA), Permissions
{ CID_SER_NUM1, STR("Serial_number_1"), STR("--"), MB_DEVICE_ADDR1, MB_PARAM_INPUT, 0, 2,
0, PARAM_TYPE_U32, 4, OPTS( 0,0,0 ), PAR_PERMS_READ_WRITE_TRIGGER },
{ CID_SW_VER1, STR("Software_version_1"), STR("--"), MB_DEVICE_ADDR1, MB_PARAM_INPUT, 2, 1,
0, PARAM_TYPE_U16, 2, OPTS( 0,0,0 ), PAR_PERMS_READ_WRITE_TRIGGER },
{ CID_TEMP_DATA_1, STR("Temperature_1"), STR("C"), MB_DEVICE_ADDR1, MB_PARAM_HOLDING, 0, 2,
0, PARAM_TYPE_FLOAT, 4, OPTS( 16, 30, 1 ), PAR_PERMS_READ_WRITE_TRIGGER },
{ CID_SER_NUM2, STR("Serial_number_2"), STR("--"), MB_DEVICE_ADDR2, MB_PARAM_INPUT, 0, 2,
0, PARAM_TYPE_U32, 4, OPTS( 0,0,0 ), PAR_PERMS_READ_WRITE_TRIGGER },
{ CID_SW_VER2, STR("Software_version_2"), STR("--"), MB_DEVICE_ADDR2, MB_PARAM_INPUT, 2, 1,
0, PARAM_TYPE_U16, 2, OPTS( 0,0,0 ), PAR_PERMS_READ_WRITE_TRIGGER },
{ CID_TEMP_DATA_2, STR("Temperature_2"), STR("C"), MB_DEVICE_ADDR2, MB_PARAM_HOLDING, 0, 2,
0, PARAM_TYPE_FLOAT, 4, OPTS( 20, 30, 1 ), PAR_PERMS_READ_WRITE_TRIGGER },
};
// Calculate number of parameters in the table
uint16_t num_device_parameters = (sizeof(device_parameters) / sizeof(device_parameters[0]));
During initialization of the stack a pointer to the Data Dictionary
(called descriptor) must be provided as the parameter of the function
below.
mbc_master_set_descriptor()
: Initialization of master descriptor.
The Data Dictionary can be initialized from SD card, MQTT or other source before start of stack. Once the initialization and setup is done, Modbus controller allows to read complex parameter from any slave included in descriptor table using its CID.
Master setup communication options¶
The call to the setup function allows to define specific communication options for port.
mbc_master_setup()
The communication structure provided as a parameter is different for serial and TCP communication mode.
Example setup for serial port:
mb_communication_info_t comm_info = {
.port = MB_PORT_NUM, // Serial port number
.mode = MB_MODE_RTU, // Modbus mode of communication (MB_MODE_RTU or MB_MODE_ASCII)
.baudrate = 9600, // Modbus communication baud rate
.parity = MB_PARITY_NONE // parity option for serial port
};
ESP_ERROR_CHECK(mbc_master_setup((void*)&comm_info));
Modbus master TCP port requires additional definition of IP address table where number of addresses should be equal to number of unique slave addresses in master Modbus Data Dictionary:
The order of IP address string corresponds to short slave address in the Data Dictionary.
#define MB_SLAVE_COUNT 2 // Number of slaves in the segment being accessed (as defined in Data Dictionary)
char* slave_ip_address_table[MB_SLAVE_COUNT] = {
"<IP_ADDRESS>", // Address corresponds to UID1 and set to predefined value by user
"<IP_ADDRESS>", // corresponds to UID2 in the segment
NULL // end of table
};
mb_communication_info_t comm_info = { 0 };
comm_info.ip_port = MB_TCP_PORT; // Modbus TCP port number (default = 502)
comm_info.ip_addr_type = MB_IPV4; // version of IP protocol
comm_info.ip_mode = MB_MODE_TCP; // Port communication mode
comm_info.ip_addr = (void*)slave_ip_address_table; // assign table of IP addresses
comm_info.ip_netif_ptr = (void*)get_example_netif();
ESP_ERROR_CHECK(mbc_master_setup((void*)&comm_info));
The slave IP addresses in the table can be assigned automatically using mdns service as described in the example. Refer to protocols/modbus/tcp/mb_tcp_master for more information.
Note
RS485 communication requires call to UART specific APIs to setup communication mode and pins. Refer to .. _uart-api-running-uart-communication: secion of UART documentation.
Master start communication¶
The start of modbus controller is the final step that allows communication. This is performed using function below:
mbc_master_start()
Below are the interface API functions that are used by Modbus master stack from user application:
mbc_master_send_request()
This function sends data request as defined in parameter request structure mb_param_request_t
,
waits response from corresponded slave and returns status of command
execution. This function provides a standard way for read/write access
to Modbus devices in the network.
mbc_master_get_cid_info()
The function gets information about supported characteristic defined
as cid from data dictionary. It will check if characteristic is
supported and returns its description as the mb_parameter_descriptor_t
structure.
mbc_master_get_parameter()
The function reads data of characteristic defined in parameters from Modbus slave device and returns its data. The additional data for request is taken from parameter description table.
Example:
const mb_parameter_descriptor_t* param_descriptor = NULL;
uint8_t temp_data[4] = {0}; // temporary buffer
uint8_t type = 0;
....
// Get the information for characteristic cid from data dictionary
esp_err_t err = mbc_master_get_cid_info(cid, ¶m_descriptor);
if ((err != ESP_ERR_NOT_FOUND) && (param_descriptor != NULL)) {
ESP_LOGE(TAG, "Could not get information for characteristic %d.", cid);
} else {
err = mbc_master_get_parameter(param_descriptor->cid, (char*)param_descriptor->param_key, (uint8_t*)temp_data, &type);
if (err == ESP_OK) {
ESP_LOGI(TAG, "Characteristic #%d %s (%s) value = (0x%08x) read successful.",
param_descriptor->cid,
(char*)param_descriptor->param_key,
(char*)param_descriptor->param_units,
*(uint32_t*)temp_data);
} else {
ESP_LOGE(TAG, "Characteristic #%d (%s) read fail, err = 0x%x (%s).",
param_descriptor->cid,
(char*)param_descriptor->param_key,
(int)err,
(char*)esp_err_to_name(err));
}
}
mbc_master_set_parameter()
The function writes characteristic’s value defined as a name and cid parameter in corresponded slave device. The additional data for parameter request is taken from master parameter description table.
uint8_t type = 0; // Type of parameter
uint8_t temp_data[4] = {0}; // temporary buffer
esp_err_t err = mbc_master_set_parameter(CID_TEMP_DATA_2, "Temperature_2", (uint8_t*)temp_data, &type);
if (err == ESP_OK) {
ESP_LOGI(TAG, "Set parameter data successfully.");
} else {
ESP_LOGE(TAG, "Set data fail, err = 0x%x (%s).", (int)err, (char*)esp_err_to_name(err));
}
Modbus master destroy communication stack¶
This function stops Modbus communication stack and destroys controller interface and free all used active objects.
mbc_master_destroy()
Modbus slave API overview¶
The sections below represent typical programming workflow for the slave API which should be called in following order:
Modbus port initialization - Initialization of Modbus controller interface for the selected port.
Slave configure data access - Configure data descriptors to access slave parameters.
Slave setup communication options - Allows to setup communication options for selected port.
Slave start communication - Start stack and sending / receiving data.
Slave communication API - Filter events when master accesses the register areas.
Slave destroy communication stack - Destroy Modbus controller and its resources.
Slave configure data access¶
The following functions must be called when the Modbus controller slave port is already initialized. Refer to Modbus port initialization.
The slave stack requires the user defined structures (memory storage
areas) which keep Modbus parameters accessed by stack. These structures
should be prepared by user and be assigned to the Modbus controller
interface using mbc_slave_set_descriptor()
API call before start of communication.
The slave task can call the mbc_slave_check_event()
function and when the area defined in the descriptor is accessed by
Modbus master the slave is unblocked and can get information about data
being accessed.
Note
One slave can define several area descriptors per each type of Modbus register area with different start_offset.
Register area is defined by using the mb_register_area_descriptor_t
structure.
Field |
Description |
|---|---|
start_offset |
Zero based register relative offset for defined register area. Example: register address = 40002 ( 4x register area - Function 3 - holding register ), start_offset = 2 |
type |
Type of the Modbus register area. Refer to |
address |
The pointer to memory area which is used to store the register data for this area descriptor. |
size |
The size of the memory area in bytes which is used to store register data. |
mbc_slave_set_descriptor()
The function initializes Modbus communication descriptors for each
type of Modbus register area (Holding Registers, Input Registers, Coils
(single bit output), Discrete Inputs). Once areas are initialized and
the mbc_slave_start()
API is called the Modbus stack can access the data in user data structures by request from master.
#define MB_REG_INPUT_START_AREA0 (0)
#define MB_REG_HOLDING_START_AREA0 (0)
#define MB_REG_HOLD_CNT (100)
#define MB_REG_INPUT_CNT (100)
mb_register_area_descriptor_t reg_area; // Modbus register area descriptor structure
unit16_t holding_reg_area[MB_REG_HOLD_CNT] = {0}; // storage area for holding registers
unit16_t input_reg_area[MB_REG_INPUT_CNT] = {0}; // storage area for input registers
reg_area.type = MB_PARAM_HOLDING; // Set type of register area
reg_area.start_offset = MB_REG_HOLDING_START_AREA0; // Offset of register area in Modbus protocol
reg_area.address = (void*)&holding_reg_area[0]; // Set pointer to storage instance
reg_area.size = sizeof(holding_reg_area) << 1; // Set the size of register storage area in bytes
ESP_ERROR_CHECK(mbc_slave_set_descriptor(reg_area));
reg_area.type = MB_PARAM_INPUT;
reg_area.start_offset = MB_REG_INPUT_START_AREA0;
reg_area.address = (void*)&input_reg_area[0];
reg_area.size = sizeof(input_reg_area) << 1;
ESP_ERROR_CHECK(mbc_slave_set_descriptor(reg_area));
At least one area descriptor per each Modbus register type must be set in order to provide register access to its area. If the master tries to access undefined area the stack will generate a Modbus exception.
Direct access to register area from user application must be protected by critical section:
Slave setup communication options¶
The function initializes the Modbus controller interface and its active context (tasks, RTOS objects and other resources).
mbc_slave_setup()
The function is used to setup communication parameters of the Modbus stack.
Example initialization of Modbus TCP communication:
esp_netif_init();
mb_communication_info_t comm_info = { 0 };
comm_info.ip_port = MB_TCP_PORT_NUMBER;
comm_info.ip_addr_type = MB_IPV4;
comm_info.ip_mode = MB_MODE_TCP; // Modbus TCp Mode
comm_info.ip_addr = NULL; // This field keeps the client IP address to bind, NULL - bind to any client
comm_info.ip_netif_ptr = (void*)get_example_netif(); // Get netif interface pointer initialized in esp_netif_init()
// Setup communication parameters and start stack
ESP_ERROR_CHECK(mbc_slave_setup((void*)&comm_info));
Example initialization of Modbus serial communication:
// Setup communication parameters and start stack
comm_info.mode = MB_MODE_RTU;
comm_info.slave_addr = MB_SLAVE_ADDR; // Short address of the slave
comm_info.port = MB_SLAVE_PORT_NUM; // UART physical port number
comm_info.baudrate = MB_SLAVE_DEV_SPEED; // Baud rate for communication
comm_info.parity = MB_PARITY_NONE; // Parity option
ESP_ERROR_CHECK(mbc_slave_setup((void*)&comm_info));
Slave start communication¶
The function below is used to start Modbus controller interface and allows communication.
mbc_slave_start()
Slave communication API¶
mbc_slave_check_event()
The blocking call to function waits for event specified in the input
parameter as event mask. Once master access the parameter and event mask
matches the parameter type the application task will be unblocked and
function will return corresponded event mb_event_group_t
which describe type of register access being done.
mbc_slave_get_param_info()
The function gets information about accessed parameters from modbus
controller event queue. The KConfig ‘FMB_CONTROLLER_NOTIFY_QUEUE_SIZE’
key can be used to configure the notification queue size. The timeout
parameter allows to specify timeout for waiting notification. The mb_param_info_t
structure contain information about accessed parameter.
Field |
Description |
|---|---|
time_stamp |
the time stamp of the event when defined parameter is accessed |
mb_offset |
start Modbus register accessed by master |
type |
type of the Modbus register area being accessed (See the |
address |
memory address that corresponds to accessed register in defined area descriptor |
size |
number of registers being accessed by master |
Example to get event when holding or input registers accessed in the slave:
#define MB_READ_MASK (MB_EVENT_INPUT_REG_RD | MB_EVENT_HOLDING_REG_RD)
#define MB_WRITE_MASK (MB_EVENT_HOLDING_REG_WR)
#define MB_READ_WRITE_MASK (MB_READ_MASK | MB_WRITE_MASK)
#define MB_PAR_INFO_GET_TOUT (10 / portTICK_RATE_MS)
....
// The function blocks while waiting for register access
mb_event_group_t event = mbc_slave_check_event(MB_READ_WRITE_MASK);
// Get information about data accessed from master
ESP_ERROR_CHECK(mbc_slave_get_param_info(®_info, MB_PAR_INFO_GET_TOUT));
const char* rw_str = (event & MB_READ_MASK) ? "READ" : "WRITE";
// Filter events and process them accordingly
if (event & (MB_EVENT_HOLDING_REG_WR | MB_EVENT_HOLDING_REG_RD)) {
ESP_LOGI(TAG, "HOLDING %s (%u us), ADDR:%u, TYPE:%u, INST_ADDR:0x%.4x, SIZE:%u",
rw_str,
(uint32_t)reg_info.time_stamp,
(uint32_t)reg_info.mb_offset,
(uint32_t)reg_info.type,
(uint32_t)reg_info.address,
(uint32_t)reg_info.size);
} else if (event & (MB_EVENT_INPUT_REG_RD)) {
ESP_LOGI(TAG, "INPUT %s (%u us), ADDR:%u, TYPE:%u, INST_ADDR:0x%.4x, SIZE:%u",
rw_str,
(uint32_t)reg_info.time_stamp,
(uint32_t)reg_info.mb_offset,
(uint32_t)reg_info.type,
(uint32_t)reg_info.address,
(uint32_t)reg_info.size);
}
Slave destroy communication stack¶
This function stops Modbus communication stack and destroys controller interface and free all used active objects allocated for slave.
mbc_slave_destroy()
Possible communication issues and solutions¶
If the examples do not work as expected and slave and master boards are not able to communicate correctly it is possible to find the reason for errors. The most important errors are described in master example output and formatted as below:
`
E (1692332) MB_CONTROLLER_MASTER: mbc_master_get_parameter(111): SERIAL master get parameter failure error=(0x107) (ESP_ERR_TIMEOUT).
`
Error enumerator |
Description |
Possible solution |
|---|---|---|
ESP_ERR_NOT_SUPPORTED (0x106) |
Invalid register request - slave returned an exception because the requested register is not supported. |
Refer to slave register map. Check the master data dictionary for correctness. |
ESP_ERR_TIMEOUT (0x107) |
Response timeout - Modbus slave did not send response during configured timeout: CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND |
Measure and increase maximum slave response timeout idf.py menuconfig, option CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND. Check physical connection or network configuration and make sure that the slave response can reach the master side. If the application has some high performance tasks with higher priority than CONFIG_FMB_PORT_TASK_PRIO it is recommended to place Modbus tasks on other core using an option CONFIG_FMB_PORT_TASK_AFFINITY. Configure the Modbus tasks priority CONFIG_FMB_PORT_TASK_PRIO to let processing quota to Modbus stack tasks. |
ESP_ERR_INVALID_RESPONSE (0x108) |
Received unsupported response from slave or frame check failure. Master can not execute command handler because the command is not supported or incorrect. |
Check the physical connection then refer to register map of your slave to configure the master data dictionary properly. |
ESP_ERR_INVALID_STATE (0x103) |
Critical failure or FSM sequence failure or master FSM is busy processing previous request. |
Make sure your physical connection is working properly. Increase task stack size and check Modbus initialization sequence. |
Application Example¶
The examples below use the FreeModbus library port for serial TCP slave and master implementations accordingly. The selection of stack is performed through KConfig menu option “Enable Modbus stack support …” for appropriate communication mode and related configuration keys.
protocols/modbus/serial/mb_slave
protocols/modbus/serial/mb_master
protocols/modbus/tcp/mb_tcp_slave
protocols/modbus/tcp/mb_tcp_master
Please refer to the specific example README.md for details.
Protocol references¶
https://modbus.org/specs.php
: Modbus organization with protocol specifications.


Consider this Java program code: private Flag someFlag; someFlag = new Flag( 10, 20, Color.CYAN, Color.GREEN ); someFlag.draw( g ); Which of these choices is an object in Java? Flag 20 draw someFlag None of these is an object Flag is a class; 20 is a parameter; draw is a method.
private Flag someFlag; someFlag = new Flag( 10, 20, Color.CYAN, Color.GREEN ); someFlag.draw( g );
Flag 20 draw someFlag None of these is an object


Register for the Hackathon
Improve something about Government that scratches a personal itch.
Show what you've created to the community.
If your project is selected by the panel of judges, you win a prize!
Hacker-in-Residence
Packet Wrangler
Delivery Manager
“Let’s go invent tomorrow instead of worrying about what happened yesterday.” – Steve Jobs


Ocala events
-
size of nerve cell nucleus
Georgia Arrests: Georgia Arrest Records and Warrant Search
Please fill in the form below to begin your Georgia criminal records search . Georgia outstanding warrants are commonly the result of individuals evading arrest .
http://www.georgiaarrests.org/Outstanding Warrant - Experienced Criminal Lawyers
If you have an outstanding warrant for your arrest, you can be caught at any time . As old police and court records get computerized and shared in nationwide .
http://www.experiencedcriminallawyers.com/criminal-charges/outstanding-warrant/Municipal Court - Warrant Information
The Henderson Municipal Court's active warrant list includes the warrant type and bail amount. To clear a warrant, you must post the full bail amount. If you are .
http://www.cityofhenderson.com/municipal_court/warrants.php
physical maps of germany Upcoming events in Ocala
resume and vendor management Hottest Tickets
-
Apr 11porcupine tree radioactive mp3
Amway Center -
Apr 28pink robot rebuilds blue robot cartoon
Amway Center -
Jun 25spunky angels melanie peachyforum
Bob Carr Performing Arts Center -
Mar 30john h sage investments
Amway Center -
Aug 27boone and crocket score sheet
Amway Center -
Jun 21concentra concentra portland me
Amway Center -
Sep 13average temperatures in quatemala
Francis Field -
Mar 17free stain glass snowflake patterns
St Augustine Amphitheatre -
Oct 8just truck and van
Amway Center -
May 4rubbermaid 1182 drain boards
Bob Carr Performing Arts Center
Ocala's best venues
-
How to Expunge a Bench Warrant | eHow.com
Outstanding warrants can result in denial of civil liberties ranging from the loss of . Petitioning the court to have your criminal records expunged can make it .
http://www.ehow.com/how_5755582_expunge-bench-warrant.html -
Oregon Wanted and Warrants - Free Public Records | Search
Search criminal most wanted and active warrant databases in Oregon. Includes databases from the Department of Corrections, Clackamas County, Portland, .
http://publicrecords.searchsystems.net/Free_Public_Records_by_Type_of_Record/Criminal_Wants_and_Warrants/Oregon-Wanted-Warrants/ -
How do I find out if I have an outstanding warrant? - Criminal Law ...
A court website may have a searchable public records section with information about outstanding warrants available to the general public. If the website does .
http://criminal-law.freeadvice.com/criminal-law/arrests_and_searches/outstanding_warrants.htmhythium contracts 2009 july 22
98 people's favorite
-
How to Remove a Bench Warrant From a Record | eHow.com
There are different types of bench warrants, and having all, if not... . counties it is possible to call the courthouse (or sheriff's department) and ask if there are any outstanding warrants on you. . How Long Does a Police Criminal Record Last?
http://www.ehow.com/how_4557947_remove-bench-warrant-record.html -
How to Check if You Have a Warrant | eHow.com
A warrant is a document issued by a court to law enforcement agencies about an . It's important for you to know whether you have an outstanding warrant. . The only records they likely would have are the warrants that have been issued in .
http://www.ehow.com/how_4794929_check-warrant.html


{% extends "layouts/base.html" %} {% block title %}Survey Details - {{survey.name}} {% endblock %} {%block content %}
| Name | Value |
|---|---|
| Admin URL | |
| Survey key | {{survey.key}} |
| Respondents | {{responses}} (clear responses) |
| Survey URL (for your convenience) |
{%if survey.survey_url %}view survey online{%else%}No URL given, please provide:{%endif%} |
Access ManagementHow does this work? | |
| Permissions | {%if survey.authorized_keys_only %}authorized keys only{%else%}open for everyone{%endif%} (toggle) |
| Authorized keys (clear all keys) | {{survey.authorized_keys|length}} keys:
|
Just take the following code and put it into the HEAD section of your HTML file:

<link rel="stylesheet" type="text/css" href="{{server_url}}/feedback.css"/>

Please make sure that you also have jQuery up and running before loading feedback.js. If not, include this script tag in addition:

Choose from our library of elements and add them to your website by putting a corresponding  tag in your code. Example for a "vote" element:

The id you choose for your elements must be unique for the corrsponding class of elements. Here is a full list of supported feedback elements:
| Element type | CSS class |
|---|---|
| Vote |
|
| Check |
|
| Rate |
|
| Input |
|
| Select |
|
To initialize and activate the feedback elements, you need to visit the website in which they are embedded once while being logged in as survey admin.
When opening the website while being logged in you will be able to edit all elements in-place. You can add descriptions, change default values or add choices.
You can restrict access to the survey by using response keys. For this, first toggle the permissions to authorized keys only. Now you can define authorized response keys that you can pass out to your respondents: Just give them a URL pointing to your survey site where you append the parameter ?response_key=[your response key]. Here's an example: {{server_url}}/welcome?response_key=test.They will then be authenticated and able to give feedback (the response key is saved in the session so it will be remembered for all subsequent visits). Alternatively, you can set the response key by using Javascript, for this just add var response_key='[your response key]';.


In contrast to Functional Requirements which specify what the system should do, Non-Functional Requirements specify the constraints under which system is developed and operated.
Requirements gathering, requirements elicitation, requirements analysis, requirements capture are some of the terms commonly and interchangeably used to represent the activity of understanding what a software product should do.


User Settings
Atul Agarwal
8879728598
View QR Code
Edit Profile
View your account details
and edit them.
Payments
Splits
Settings


Next:
#1
Graphcode Documentation
Russell K. Standish and Duraid Madina
#172#>
#1
#1
Graph
Basic usage of Graph
Objects
Serialisation methods
Virtual Constructors
Run Time Type Identification
Node and edge weights
Edge list
Self linking nodes
objref
Ptrlist
omap
Note on using macros to parametrise omap
Building Graphcode
Using graphcode in parallel
Examples
Index
About this document ...
Russell Standish
2007-03-13


You are trying to submit an empty value
Email successfully verified.
Resetting password...
Password reset successful Login


TABLE OF CONTENT
A. GS1 Related B. GS2 Related Polity 1. SC notice to govt on abortion deadline 2. TB patients will need Aadhaar for cash benefits 3. Bad for health B. GS2 Related International Relations 1. Text of the Speech of Defence Minister at TECHNOPROM- 2017 in Russia C. GS3 Related Science and Technology 1. NASA finds 10 Earth-sized exoplanets D. GS4 Related E. Concepts-in-News: Related Concepts to Revise/Learn F. Bills/Acts/Schemes/Orgs in News G. Practice Questions for UPSC Prelims Exam
UPSC Current Affairs 2017: News Analysis
A. GS1 Related
Nothing here for Today!!!
B. GS2 Related
1. SC notice to govt on abortion deadline
Context:
- A woman challenged a Section 3 of the Medical termination of Pregnancy Act, 1971 which says that pregnancy cannot be terminated after 20 weeks.
- A 2014 pending bill proposes to extend the legally permissible period for termination to 24 weeks.
- Taking note of the distress plea, a vacation bench of SCsought response from the Bengal govt.
Key Fact: Out of the 26 million births that occur in India every year, approximately 2-3% had severe congenital or chromosomal abnormality
Basic Information: What is MTP Act, 1971? Abortion in India is legal only up to twenty weeks of pregnancy under specific conditions and situations. One, the continuance of the pregnancy would involve a risk to the life of the pregnant woman or of grave injury of physical or mental health, or Two, there is a substantial risk that if the child were born, it would suffer from such physical or mental abnormalities as to be seriously handicapped. What the draft MPT bill 2014 provides? The draft MTP increased the legal limit for abortion from 20 weeks to 24 weeks. It provides for abortion beyond 24 weeks under defined conditions. The Bill amends Section 3 of the 1971 Act to provide that “the length of pregnancy shall not apply” in a decision to abort a foetus diagnosed with “substantial foetal abnormalities” or if it is “alleged by the pregnant woman to have been caused by rape”. Under the 1971 Act, even pregnant rape victims cannot abort after 20 weeks, compelling them to move court. It allows a woman to take an independent decision in consultation with a registered health-care provider. It also takes into account the reality of a massive shortage of both doctors and trained midwives, and seeks to allow Ayurveda, Unani and Siddha practitioners to carry out abortions. Why is it essential to change the MTP law? Foetal abnormalities show up only by 18 weeks, so just a two-week window after that is too small for the would-be parents to take the difficult call on whether to keep their baby. Even for the medical practitioner, this window is too small to exhaust all possible options before advising the patient. There is an urgent need to empower women with sexual rights, legal protection against sex crimes and sex choices both in their own interest and for the sake of reducing the fertility rate as a whole. The lack of legal approval moves abortion to underground and they are done in unhygienic conditions by untrained, thus, putting thousands of women at risk.
2. TB patients will need Aadhaar for cash benefits
In news:
New register norms:
- Tuberculosis patients, hospitals and healthcare workers availing cash assistance from the government will need to register with the Aadhaar database.
Revised National Tuberculosis Control Programme (RNTCP):
- Under this scheme the government requires that patients diagnosed with TB and availing treatment be registered with Nikshay , a web-based application used by the authorities to track funds, treatment outcomes and health providers connected to the RNTCP.
- It is being implemented by State governments and Union Territory administrations via government health facilities and registered private health facilities across the country.
Who is eligible to receive payments now?
Tribals, and health care workers involved with the DOTS (Directly Observed Treatment, Short Course). But to meet TB elimination goals, the cash benefits are likely to be made available to all patients.
Key fact:
- The World Health Organization has said that tuberculosis epidemic in India was “larger” than what had been previously estimated and asserted that the country was one of six nations which accounted for 60% of the new cases in 2015.
- According to reports, the prevalence of TB in India was at 217 per 1,00,000 population in 2015 as against the previously estimated 127.
- The government has pledged its commitment to eliminate tuberculosis by 2025, five years ahead of the global goal to reduce the number of such deaths by 90 per cent by 2030.
Context:
- A notice issued by a health ministry expert committee in the first week of June signals the government’s intention to usher major change in India’s pharmaceutical sector
- It invites comments from stakeholders about replacing widely-used animal parts-based gelatin capsules with those derived from cellulose
- In 2015, the scientific committee which advises the Drug Controller General of India (DGCI) gave an in-principle approval to the shift to cellulose-based capsules
Current situation: Currently, 98 per cent of the Indian pharmaceutical industry uses animal parts-based capsules
What government wants?
- Government has been pitching for “vegetarian capsules” for the past two years
- But there is little medical or commercial reasoning behind this proposal
What this could lead to?
A switch over to cellulose-based capsules could jeopardise the government’s recent initiatives to make medicines accessible to all.
Difference in opinions:
- In an e-mail last year to the joint secretary, health ministry, the DGCI pitched for “vegetable capsules for vegetarian society”
- The DGCI’s vegetarian fetish found support from the Women and Child Development Minister Maneka Gandhi
- She argued, “In a country where there are millions of people, this hurts religious sentiments and many people avoid medicines that are in a capsule form”
- The Drug Technical Advisory Board, health ministry’s premier advisory agency, had dismissed Gandhi’s representation on the grounds that: “Unlike food, drugs are not taken as choice but are prescribed by doctors to save lives and marking them as vegetarian or non-vegetarian is not desirable”
- The health ministry has overruled this reasoning
Concerns/opinions of industry:
- They have argued that the gelatin capsules have been in use all over the world for more than 180 years
- They also questioned viability of cellulose-based capsules
- Various industry associations cited the huge economic cost of the switch, which may also impact accessibility of medicines
- The cost of raw material required to make cellulose capsules is approximately four times that of gelatin and the manufacturing cost of cellulose-based capsules approximately three times the cost of gelatin capsules
Category: INTERNATIONAL RELATIONS
1. Text of the Speech of Defence Minister at TECHNOPROM- 2017 in Russia
Key point:
- Defence Minister Arun Jaitley has urged Russian defence companies to set up local joint ventures with Indian firms to produce spares and components for use by the Indian military as well as for exports.
-
TECHNOPROM
:
- Technoprom is an international business platform devoted to the issues of forming the sixth technological mode based on the active development of science, technologies, and engineering, international and inter-regional integration.
- The focus this year on breakthrough technologies in the scientific, technological and innovative fields has established this event as a key forum for insights and business opportunities into leading technological products and technologies.
Relationship with Russia a key priority:
- India and Russia are celebrating the 70th Anniversary of the establishment of diplomatic relations. For India, relations with Russia are a key foreign policy priority. Russia is been a trusted and time-tested partner.
- India-Russia Strategic Partnership in 2000 covers areas like defence and security cooperation, trade and economic partnership, science and technology linkages and cultural exchanges.
-
Area of military technical cooperation: relationship escalated from just being
buyer-seller relationship to one involving joint research, development and production of
advanced defence systems.
Example: The Brahmos Missile System and the licensed production of advanced Sukhoi 30 aircraft in India are recent highlights of our bilateral cooperation
Government of India initiatives:
- Under Defence Procurement Procedure (DPP) of 2016, a new category of acquisition called ‘Buy (IDDM)’,has been introduced. In this first preference would be given to the equipments, which are designed, developed and manufactured within the country. This will encourage Indian companies to invest in R&D and technology.
- Liberalised license norms:
- For manufacturing of parts, components, sub-systems, production equipments and testing equipments, no license is required from the Government.
- For the items for which license is required, the initial validity has been increased from 3 years to 15 years.
C. GS3 Related
Category: SCIENCE AND TECHNOLOGY
1. NASA finds 10 Earth-sized exoplanets
Context
- NASA revealed new rocky, Earth-sized planets
- These could potentially have liquid water and support life
The Kepler mission
- The Kepler mission team released a survey of 219 potential exoplanets
- These planets are outside of our solar system
- They had been detected by the space observatory launched in 2009 to scan the Milky Way galaxy
Location of these exoplanets:
- Ten of the new discoveries were orbiting their suns
- Their orbit is at a distance similar to the Earth’s orbit around the sun
- This is the habitable zone that could potentially have liquid water and sustain life
Habitable zones
- Kepler has already discovered 4,034 potential exoplanets
- 2,335 of these have been confirmed by other telescopes as actual planets
- The 10 new Earth-size planets bring the total to 50 that exist in habitable zones around the galaxy
- The telescope detects the presence of planets by registering minuscule drops in a star’s brightness
Basic Information: Kepler Mission Kepler is a space observatory launched by NASA to discover Earth-size planets orbiting other stars Named after astronomer Johannes Kepler It was launched into an Earth-trailing heliocentric orbit Kepler is part of NASA’s Discovery Program of relatively low-cost, focused primary science missions The scientific objective of Kepler is to explore the structure and diversity of planetary systems This spacecraft observes: To determine how many Earth-size and larger planets there are in or near the habitable zone (often called “Goldilocks planets”) To determine the range of size and shape of the orbits of these planets To estimate how many planets there are in multiple-star systems To determine the range of orbit size, brightness, size, mass and density of short-period giant planets To identify additional members of each discovered planetary system using other techniques Determine the properties of those stars that harbor planetary systems
D. GS4 Related
Nothing here for Today!! !
PIB Articles Editorials Roundup
E. Concepts-in-News: Related Concepts to Revise/Learn
Prelims worthy factual information
1. GST slabs for reference
2. Wassenaar Arrangement:
About:
- The Wassenaar Arrangement on Export Controls for Conventional Arms and Dual-Use Goods and Technologies, commonly known as the Wassenaar Arrangement, is a multilateral export control regime (MECR) with 41 participating states
- The Wassenaar Arrangement was established to contribute to regional and international security and stability by promoting transparency and greater responsibility in transfers of conventional arms and dual-use goods and technologies, thus preventing destabilizing accumulations.
- Participating States seek, through their national policies, to ensure that transfers of these items do not contribute to the development or enhancement of military capabilities which undermine these goals, and are not diverted to support such capabilities.
- Every six months member countries exchange information on deliveries of conventional arms to non-Wassenaar members that fall under eight broad weapons categories:
Control List:
- The list of restricted technologies is broken into two parts, the “List of Dual-Use Goods and Technologies ” (also known as the Basic List ) and the “ Munitions List”.
The Basic List is composed of ten categories based on increasing levels of sophistication:
- Category 1 – Special Materials and Related Equipment
- Category 2 – Materials Processing
- Category 3 – Electronics
- Category 4 – Computers
- Category 5 – Part 1 – Telecommunications
- Category 5 – Part 2 – “Information Security”
- Category 6 – Sensors and “Lasers”
- Category 7 – Navigation and Avionics
- Category 8 – Marine
- Category 9 – Aerospace and Propulsion
Basic List has two nested subsections— Sensitive and Very Sensitive . Items of the Very Sensitive List include materials for stealth technology—i.e., equipment that could be used for submarine detection, advanced radar, and jet engine technologies.
- The Munitions List has 22 categories, which are not labeled.
Admission requires states to:
- Be a producer or exporter of arms or sensitive industrial equipment
-
Maintain non-proliferation policies and appropriate national policies,
including adherence to:
- Non-proliferation policies, such as (where applicable) the Nuclear Suppliers Group, the Missile Technology Control Regime, and the Australia Group
- Nuclear Non-Proliferation Treaty, the Biological Weapons Convention, the Chemical Weapons Convention and, where applicable, START I (including the Lisbon Protocol)
- Maintain fully effective export controls
- Admission of new members requires the consensus of all members.
The People’s Republic of China and Israel are not members, but they have aligned their export controls with Wassenaar lists, and are significant arms exporters.
New amendment : In December 2013, the list of export restricted technologies was amended to include internet-based surveillance systems. New technologies placed under the export control regime include “intrusion software”—software designed to defeat a computer or network’s protective measures so as to extract data or information—as well as IP network surveillance systems.
F. Bills/Acts/Schemes/Orgs in News
|
Schemes/Programs in News |
About the Scheme |
|
Revised National Tuberculosis Control Program |
About and objectives:
Program strategy:
|


--- title: Explore Correlation Among Variables with Corrplot author: Masood Sadat date: '2018-06-14' slug: explore-correlation-among-variables-with-corrplot categories: - r tips tags: - EDA ---
Exploring relationship among variables in a data set is never easier with corrplot package and function of the same name. corrplot takes in a correlation matrix and returns a visual representation of that correlation matrix.
Try it for yourself.
install.packages("corrplot")
library(corrplot)
cor
, and then plot the correlations using corrplot()
. You have to specify a method, and there are quite a few of them–here I demonstrate two of them: square and numbermat <- cor(mtcars)
corrplot(mat, method = "square")
corrplot(mat, method = "number")
To explore more, see the help (?corrplot
) and visit the Introduction to corrplot Package post on CRAN.